в точке xk будем обозначать y xk , а некоторое приближение этого значения – через yk . По условию y x0 y0 .
Разделив a; b на n частей, получим точки a x0 x1 x2 xn 1 xn b .
В точках с номерами 1,2,...,n приближённое значение функции находим по формуле
|
|
|
|
yk 1 yk xk 1 |
xk f xk , yk , |
(4.5) |
||||||||||
подставляя соответственно k 0,1, n 1. |
|
|
|
|
|
|
|
|
||||||||
Если отрезок разделён на одинаковые части, то величина xk 1 |
xk постоянна и |
|||||||||||||||
равна h, где h |
b a |
. Тогда |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
yk 1 |
yk |
hf xk , yk |
|
|
(4.6) |
|||||
для k 0,1, n 1. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Вычисления закончены, |
когда k n , т. е. когда найдено yn |
– приближённое |
||||||||||||||
значение функции в точке b. В ответе указываем таблицу значений в виде |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
a |
x1 |
|
x2 |
|
… |
xn 1 |
|
b |
|
|
|
|
|
|
y |
|
y0 |
y1 |
|
y2 |
|
… |
yn 1 |
|
yn |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(4.7) |
Если y xk – точное значение, то величина |
|
yk y xk |
|
|
– погрешность в точке xk . |
|||||||||||
|
|
|||||||||||||||
Замечание. Если начало отрезка a x0 , достаточно при движении от точки x0 влево к точке a считать, что шаг h 0 . Если же a x0 , в ответе не надо ука-
зывать результаты в точках xk a .
Нахождение приближённых значений ук в точках хк к точным значениям у(хк) в этих же точках неизвестного решения у(х) задачи Коши (4.4) по формулам (4.5) или (4.6) и есть метод Эйлера численного решения этой задачи. Сущность метода состоит в том, что производная y дифференциального уравнения (4.1)
заменяется разностным отношением
yk 1 yk
xk 1 xk
в случае произвольного (неравномерного) разбиения отрезка [a, b] на части и разностным отношением
yk 1 yk
h
66
в случае разбиения этого отрезка с одинаковым (равномерным) шагом h. Во второй ситуации вместо нахождения точного решения у(х) задачи (4.4.) ищется решение алгебраического уравнения
yk 1 yk |
f x |
|
, y |
|
|
|
h |
k |
k |
||||
|
|
|
||||
|
|
|
|
|
с неизвестными числами у1,…,уn при известном начальном значении у0, структура которого напоминает дифференциальное уравнение (4.1) и которое приводит к явной формуле (4.6) нахождения этих значений. Аналогичную трактовку имеет и явная формула (4.5), которая следует из уравнения
yk 1 yk f xk , yk . xk 1 xk
В § 5 будут обсуждены вопросы приближения (аппроксимации) производных их разностными отношениями.
Обратимся к таблице (4.7), задающей некоторую функцию, которую можно интерполировать каким-нибудь способом на весь отрезок [a, b] (см. § 1).
Простейшим способом является соединение точек |
M k xk , yk прямолинейными |
отрезками в прямоугольной системе координат |
Оху. Координаты точек Мк |
(к=0,1,…,n) определяются таблицей (4.7). Ломаная, соединяющая точки Мк,
называется ломаной Эйлера.
Для определённости рассмотрим только формулу (4.6) с равномерным нача-
лом приближения. Обозначим ломаную Эйлера в этом случае через yh* (x)n . Так как соответствующее разностное отношение приближает производную y , то естественно ожидать, что при h 0 ломаные Эйлера yh* (x)n приближаются к графику искомой интегральной кривой (графику искомого решения у(х) задачи (4.4). Следовательно, с уменьшением шага h метод Эйлера должен давать всё более точные приближения к искомому решению.
Отметим ещё, что метод ломаных Эйлера применяется и для доказательства теоремы существования и единственности решения задачи Коши (4.4) при весьма общих требованиях к функции f(x,y) как функции двух переменных. Однако такие тонкие вопросы выходят за рамки программы этой дисциплины.
Пример. Решим методом Эйлера уравнение y x при условии y 2 1 на y 2
отрезке 2;4 .
67
|
Решение. |
Разделим исходный |
отрезок |
на |
пять |
|
равных |
частей, |
тогда |
||||||||||||||||||||||||||||||||||||||||
h |
|
4 2 |
0,4 . Получаем точки x |
|
2; x 2,4; |
x |
|
|
|
2,8; |
x |
|
3,2; |
x |
|
3,6; x |
|
4. |
|||||||||||||||||||||||||||||||
|
|
0 |
2 |
3 |
4 |
5 |
|||||||||||||||||||||||||||||||||||||||||||
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
Правая |
часть |
|
уравнения |
|
имеет |
|
|
вид |
|
|
|
|
f x, y |
x |
. |
|
По |
условию |
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||
|
|
|
|
|
y 2 |
|
|||||||||||||||||||||||||||||||||||||||||||
y |
0 |
y x |
y 2 1. |
Затем находим значение у(х) в точке х1 |
по формуле (4.6): |
||||||||||||||||||||||||||||||||||||||||||||
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
y 2,4 y 2 hf 2,1 , |
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
y 2,4 1,000 0,4 |
|
|
|
1,267 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
1 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||
|
|
Значения у(х) в остальных точках х2, х3, х4, х5 |
находим по той же формуле |
||||||||||||||||||||||||||||||||||||||||||||||
(4.6) с учётом найденных предыдущих ук: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
y 2,8 1,267 0,4 |
|
2,4 |
|
|
|
1,561; |
|
|
|
|
|
|
y 3,2 1,561 0,4 |
|
|
|
2,8 |
|
|
1,874; |
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||
|
|
1,267 2 |
|
|
|
|
|
1,561 2 |
|||||||||||||||||||||||||||||||||||||||||
|
|
y 3,6 1,874 0,4 |
|
|
3,2 |
|
|
2,204; |
|
|
|
|
|
|
y 4 2,204 0,4 |
|
|
|
|
3,6 |
|
|
2,547. |
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||
|
|
1,874 2 |
|
|
|
|
|
|
2,204 2 |
||||||||||||||||||||||||||||||||||||||||
|
Ответ: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
x |
|
2 |
|
|
|
2,4 |
|
|
2,8 |
|
|
3,2 |
|
|
|
|
3,6 |
|
|
|
4,0 |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
y |
|
1 |
|
|
|
1,267 |
|
1,561 |
|
1,874 |
|
|
2,204 |
|
|
2,547 |
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||
|
|
Задача допускает точное решение y |
|
|
|
x2 5 2 . Таблица значений, найден- |
|||||||||||||||||||||||||||||||||||||||||||
ных по этой формуле с точностью до третьего знака, имеет вид |
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
х |
2 |
2,4 |
|
2,8 |
|
|
3,2 |
|
|
3,6 |
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
у |
1 |
1,280 |
|
1,583 |
|
1,904 |
|
|
2,238 |
|
2,582 |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||
Для значения |
y 4 |
абсолютная ошибка (погрешность) |
вычисления составляет |
||||||||||||||||||||||||||||||||||||||||||||||
0,035, а относительная ошибка – почти 2%. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
4.2. Метод Рунге – Кутта
Метод Эйлера легко программируется, но его точность невысока. В первой точке погрешность пропорциональна квадрату шага, в последней точке пропорциональна самому шагу. Для повышения точности в 10 раз, то есть на знак после запятой, приходится уменьшать шаг в 10 раз. Точность можно повысить, применяя метод Рунге – Кутта по следующей схеме.
Шаг 1. Решим задачу Коши методом Эйлера с шагом h1 ; получим значения yk в точках x0 , x1 , , xn , где xk x0 h1k .
68
|
Шаг 2. Решим задачу тем же методом с шагом h2 0,5h1 ; получим значения |
||||||||||
yk |
в точках x0 , x1 , , xm , где xk x0 h2k и m 2n . |
|
|
||||||||
|
Точки x |
с чётными номерами совпадут с точками, полученными при шаге h1 , |
|||||||||
а именно, xk |
x2k . |
|
|
|
|
|
|
|
|
|
|
|
Шаг 3. Обозначим t0 , t1 , , tn – точки, в которых значения получены дважды, |
||||||||||
а значения функции в них обозначим y0 , y1 , , yn |
и y0 , y1 , yn ( y0 |
y0 ). |
|||||||||
|
Пересчитаем новые приближённые значения в точках t0 , t1 , , tn по формуле |
||||||||||
~ |
yk 2 yk (формула равносильна |
~ |
|
|
yk |
yk ). |
|
|
|||
yk |
yk yk |
|
|
||||||||
|
Шаг 4. В ответе указываем таблицу значений |
~ |
|
|
|
||||||
|
yk в точках tk . |
|
|
||||||||
|
Замечание. Уточнение подобным методом возможно и при других соотно- |
||||||||||
шениях между h1 и h2 , однако при h2 |
0,5h1 |
пересчёт наиболее прост. |
|||||||||
|
Пример. |
Решим методом Рунге – Кутта уравнение y 2x 1 при условии |
|||||||||
y 0 3 на отрезке 0;5 . |
|
|
|
|
|
|
|
|
|
||
|
Решение. Шаг 1. Выбираем n 5, тогда h |
5 0 |
1 . |
|
|
||||||
|
|
|
|
||||||||
|
|
|
|
|
|
1 |
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
По условию y 0 3, остальные значения находим по формуле (4.6): |
|||||||||||
|
y1 3 1 2 0 1 4; |
|
|
|
|
|
|
|
|
|
|
|
y2 4 1 2 1 1 7; |
|
|
|
|
|
|
|
|
|
|
|
y3 7 1 2 2 1 12; |
|
|
|
|
|
|
|
|
|
|
|
y4 12 1 2 3 1 19; |
|
|
|
|
|
|
|
|
|
|
|
y5 19 1 2 4 1 28. |
|
|
|
|
|
|
|
|
|
|
|
Шаг 2. Выбираем n 10 , тогда h |
|
5 0 |
|
0,5 . По-прежнему y |
|
3 , но теперь |
||||
|
|
0 |
|||||||||
|
|
2 |
10 |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
||
точек в 2 раза больше. Находим |
|
|
|
|
|
|
|
|
|
||
|
y 0,5 3 0,5 2 0 1 3,5; |
|
|
|
|
y 1,0 3,5 0,5 2 0,5 1 4,5; |
|||||
|
y 1,5 4,5 0,5 2 1 1 6,0; |
|
|
|
|
y 2,0 6,0 0,5 2 1,5 1 8,0; |
|||||
|
y 2,5 8,0 0,5 2 2 1 10,5; |
|
|
|
|
y 3,0 10,5 0,5 2 2,5 1 13,5; |
|||||
|
y 3,5 13,5 0,5 2 3 1 17,0; |
|
|
|
|
y 4,0 17,0 0,5 2 3,5 1 21,0; |
|||||
|
y 4,5 21,0 0,5 2 4 1 25,5; |
|
|
|
|
y 5,0 25,5 0,5 2 4,5 1 30,5. |
|||||
Шаг 3. В точках x = 1, 2, 3, 4, 5 приближённые значения найдены дважды. Пересчитываем:
69
|
|
|
~ |
|
4 2 4,5 5; |
|
|
|||
|
|
|
y1 |
|
|
|||||
|
|
|
~ |
|
7 2 8,0 9; |
|
|
|||
|
|
|
y2 |
|
|
|||||
|
|
|
~ |
|
12 2 13,5 15; |
|
|
|||
|
|
|
y3 |
|
|
|||||
|
|
|
~ |
|
19 2 21 23; |
|
|
|||
|
|
|
y4 |
|
|
|||||
|
|
|
~ |
|
28 2 30,5 33. |
|
|
|||
|
|
|
y5 |
|
|
|||||
Шаг 4. Ответ: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
х |
0 |
1 |
|
2 |
|
3 |
4 |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
у |
3 |
5 |
|
9 |
|
15 |
23 |
33 |
|
|
|
|
|
|
|
|
|
|
|
|
Уравнение имеет точное решение y x2 |
x 3, |
получаемое простым инте- |
||||||||
грированием. Решение, уточнённое методом Рунге – Кутта, совпадает с точным. Заметьте, как при большом шаге результаты вычислений методом Эйлера отличаются от настоящих (точных).
В общем случае метод Рунге – Кутта имеет 2-й порядок точности O h2 и абсолютно точен, если настоящее решение – полином не выше 2-й степени. Уменьшение шага h в 10 раз повышает точность (уменьшает погрешность) в 100 раз, то есть на два десятичных знака.
4.3. Методы "Предиктор-Корректор" 2-го порядка точности
Метод Эйлера дает невысокую точность, а метод Рунге – Кутта не очень удобно программировать. Идея методов "Предиктор-Корректор", часто называемых "Счёт-Пересчёт" – использовать вспомогательные значения функции в точках между соседними узлами отрезка. С геометрической точки зрения при этом происходит движение в направлении касательной к графику искомой функции, но с учётом его выпуклости.
Как обычно, решаем задачу (4.4) на отрезке a; b , где без потери общности
ax0 . Отрезок делим на n равных частей и получаем шаг h b a / n , при этом xk x0 kh .
Способ 1. Пусть найдено приближённое решение |
yk в точке xk . На следую- |
||||||||||
щем шаге находим вспомогательное значение y* y |
k |
0,5hf x |
, y |
k |
, тогда значе- |
||||||
|
|
|
|
|
|
|
k |
|
|
||
ние в следующей узловой точке находится по формуле |
|
|
|
||||||||
y |
k 1 |
y |
k |
hf x |
k |
0,5h; y* . |
|
|
|
(4.8) |
|
|
|
|
|
|
|
|
|
|
|||
70