Лабораторная работа № 15
Численное решение задачи Коши для обыкновенного дифферен-
циального уравнения
1. Задача Коши для обыкновенного дифференциального уравнения
Задачей Коши или задачей с начальным условием для обыкновенного дифференциального уравнения (ОДУ) первого порядка называется задача по-
строения решения уравнения (15.1)
du(x) |
f (x,u) , |
(15.1) |
|
dx |
|||
|
|
удовлетворяющего заданному начальному условию в некоторой точке x=a, т.е.
u(a) u0 . |
(15.2) |
В дальнейшем предполагается, что решение требуется построить на конечном промежутке (a,b], а функция f(x,y) определена и непрерывна в пределах этого промежутка.
В значительной части случаев, представляющих практический интерес, не удается получить решение задачи Коши в конечном виде. Поэтому для опреде-
ления приближенного решения уравнения (15.1) с начальным условием (15.2)
используются численные методы, основанные на замене производной неиз-
вестной функции u'(x) конечной разностью.
Проиллюстрируем общую идею на простейшем примере. Для переменной
x введем сетку ω (15.3), которую в дальнейшем считаем равномерной, т.е.
ωh={xn=a+nh, n=0, 1, 2, …, m}, где h=(b–a)/m. |
(15.3) |
|||||
Заменив производную функции правой конечной разностью в точке x=xn, |
||||||
получаем (15.4) |
|
|||||
|
du(x) |
|
|
u(xn 1 ) u(xn ) |
, n=0, 1, 2, …, m–1. |
(15.4) |
|
dx x xn |
|
||||
|
|
xn 1 xn |
|
|||
Подставляя (15.4) в исходное уравнение (15.1) имеем (15.5) 77
u(x |
n 1 |
) u(x |
n |
) |
|
|||
|
|
|
|
|
||||
|
|
|
|
|
|
|||
x |
n 1 |
x |
n |
|
|
|
||
|
|
|
|
|
|
|||
f
x |
n |
,u(x |
n |
)
,
(15.5)
где xn=a+nh, n=0, 1, 2, …, m–1.
Переходя в (15.5) к точному равенству, получим систему разностных урав-
нений для сеточной функции y(xn) (n=0, 1, 2, …, m), определенной только в уз-
лах сетки (15.6)
y(x |
n 1 |
) y(x |
n |
) |
|
|
|
|
|||
|
|
|
|
||
|
|
h |
|
|
|
f x |
n |
, |
|
|
y(x |
n |
|
)
,
(15.6)
где xn=a+nh, n=0, 1, 2, …, m–1.
В качестве значения сеточной функции y(x0) в точке x0 принимается начальное значение исходной функции u(a)=u0, т.е. y(x0)=u0.
При стремлении к нулю шага сетки, значения сеточной функции стремятся к точному решению дифференциального уравнения [3]. Таким образом, реше-
ние задачи Коши для дифференциального уравнения можно свести к решению алгебраических уравнений для сеточной функции. В дальнейшем для сокраще-
ния записи используется обозначение y(xn)=yn.
Если в уравнении (15.6) перенести в правую часть все члены, определен-
ные в точке xn, а в левой части оставить значение сеточной функции в точке xn+1, то получим рекуррентную формулу, связывающую значения неизвестной
функции в двух соседних точках сетки (15.7) |
|
|
yn 1 yn hf xn , yn , |
y0 u0 , n=0, 1, 2, …, m–1. |
(15.7) |
|
|
|
Используя рекуррентную формулу, можно вычислить значение сеточной функции в любой точке отрезка. Рассмотренный метод решения называется ме-
тодом Эйлера. Метод Эйлера имеет погрешность первого порядка [3], т. е.
оценка погрешности метода n=|yn–un| в точке xn дается неравенством n≤М1h.
Здесь М1 – некоторая постоянная величина.
Существуют различные способы перехода от дифференциального уравне-
ния к разностному, отличающиеся числом и расположением точек сетки, в ко-
78
торых значения сеточной функции используются для аппроксимации диффе-
ренциального уравнения. В тех случаях, когда для повышения точности ап-
проксимации применяются промежуточные точки отрезка [xn, xn+1], соответ-
ствующие методы принято называть многоэтапными. Наиболее известным се-
мейством многоэтапных методов являются методы Рунге-Кутта. Расчетные формулы для четырехэтапного метода Рунге-Кутта, имеют вид (15.8) [3]
y0 u0 ,
yn 1
k1,n
k |
2,n |
|
|
k |
3,n |
|
|
k |
4,n |
|
yn 16 (k1,n
hf xn |
, yn , |
|||
|
|
|
h |
, |
hf x |
n |
|
||
|
|
2 |
|
|
|
|
|
|
|
|
|
|
h |
, |
hf x |
n |
|
||
|
|
2 |
|
|
|
|
|
|
|
hf x |
|
h, y |
||
n |
|
|
|
|
2k2,n 2k3,n k4,n ) ,
y |
|
|
k |
|
|
|
n |
|
1,n |
|
, |
||
|
|
2 |
|
|||
|
|
|
|
|
||
y |
|
|
k |
2,n |
|
|
n |
|
|
, |
|||
|
|
2 |
|
|||
|
|
|
|
|
||
n k3,n . |
|
|
||||
(15.8)
Четырехэтапный метод Рунге-Кутта имеет погрешность четвертого поряд-
ка с оценкой [3] n=|yn–un|≤М2h4.
Если для аппроксимации уравнения используются несколько узлов сетки,
то соответствующий метод называется многошаговым. На практике часто ис-
пользуется семейство многошаговых методов, называемых методами Адамса.
Расчетная формула для трехшагового метода Адамса имеет вид [3] (15.9)
y |
y |
|
|
h |
23 f x |
, y |
16 f x |
, y |
|
5 f |
n |
|
n 1 |
||||||||
n 1 |
|
|
12 |
n |
n |
n 1 |
|
|
||
|
|
|
|
|
|
|
|
|
|
y0=u0.
x |
, |
n 2 |
|
y |
n 2 |
|
,
(15.9)
Для начала вычислений методом Адамса необходимо использовать начальное условие y0=u0 в точке x0 и, применяя метод Рунге-Кутта, найти зна-
чение сеточной функции y1 и y2 в точках x1 и x2. Трехшаговый метод Адамса имеет погрешность третьего порядка [3] n=|yn–un|≤М2h3.
79
2. Практическая оценка погрешности решения ОДУ. Правило Рунге
Оценку погрешности приближенного решения можно выполнить, сравни-
вая значения сеточной функции, полученные с различными шагами сетки, на правом конце промежутке, т.е. в точке x=b. Если вычисления выполняются на двух сетках, у которых шаг различается в два раза, то оценка погрешности в со-
ответствии с правилом Рунге имеет вид (15.10) [2]
2m |
y2m |
ym |
. |
(15.10) |
|
2 |
n |
1 |
|||
|
|
|
|
||
Здесь ym – значение сеточной функции на правом конце отрезка [a,b], получен-
ное для шага сетки h, т.е. при разбиении на m частичных отрезков, y2m – значе-
ние сеточной функции на правом конце отрезка, полученное со значением шага сетки h/2, т.е. при разбиении на 2m частичных отрезков, а 2m – оценка погреш-
ности для значения y2m.
Показатель степени n выбирается в зависимости от порядка малости по-
грешности, присущей численному методу. Например, для метода Эйлера n=1,
для семейства четырехэтапных методов Рунге-Кутта n=4, а для трехшагового метода Адамса n=3.
3. Оформление результатов вычислений
Результаты вычисления сеточной функции размещаются в таблице 15.1.
Таблица 15.1
Решение ОДУ методами Эйлера, Рунге-Кутта и Адамса
|
|
Метод Эйлера |
|
Метод Рунге-Кутта |
|
Метод |
|||
|
|
|
|
Адамса |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
xn |
f(xn,yn) |
yn |
k1,n |
k2,n |
k3,n |
k4,n |
yn |
yn |
|
|
|
|
|
|
|
|
|
|
0 |
x0 |
f(x0,y0) |
y0 |
k1,0 |
k2,0 |
k3,0 |
k4,0 |
y0 |
y0 |
1 |
x1 |
f(x1,y1) |
y1 |
k1,1 |
k2,1 |
k3,1 |
k4,1 |
y1 |
y1 |
2 |
x2 |
f(x2,y2) |
y2 |
k1,2 |
k2,2 |
k3,2 |
k4,2 |
y2 |
y2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
|
|
|
|
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
m-1 |
xm-1 |
f(xm-1,ym-1) |
ym-1 |
k1,m-1 |
k2,m-1 |
k3,m-1 |
k4,m-1 |
ym-1 |
ym-1 |
m |
xm |
|
ym |
|
|
|
|
ym |
ym |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
При заполнении таблицы следует иметь в виду, что вычисление следую-
щего значения неизвестной функции основано на ее предыдущем значении.
Правые части формул вычисляются также на основе предыдущих значений се-
точной функции и независимой переменной, расположенных в предшествую-
щей строке (строках). Например, в методе Эйлера для вычисления значения y1
используются и f(x0,y0). Аналогично в методе Рунге-Кутта для вычисления зна-
чения y1 используются y0 и k1,0, k2,0, k3,0, k4,0. В трехшаговом методе Адамса y0
определяется из начальных условий, а для значений функций y1 и y2 использу-
ются результаты метода Рунге-Кутта. Значение y3 определяется на основе y0, y1, y2 и т.д.
4.Задание для самостоятельного выполнения
1.Для двух разбиений отрезка [a,b], границы которого указаны в варианте за-
дания, с m=10 и m=20, вычислить приближенное решение соответствующе-
го ОДУ, с заданным начальным условием, используя методы Эйлера, Рунге-
Кутта и Адамса см. (15.7), (15.8) и (15.9).
2.Вычисления выполнять с четырьмя десятичными знаками.
3.Оформить результаты расчетов в виде таблицы 15.1, адаптированной к условиям задачи.
4.Оценить значения погрешностей сеточных функций, используя правило Рунге.
5.Построить и включить в отчет графики сеточных функций, полученных различными методами для m=20.
81
5. Пример выполнения задания
Задание
1.Для двух разбиений отрезка [0,4] с m=10 и m=20 вычислить приближенное решение уравнения u'=(2–x)2/u с начальным условием u(0)=1, используя ме-
тоды Эйлера, Рунге-Кутта и Адамса.
2.Вычисления выполнять с четырьмя десятичными знаками.
3.Оформить результаты расчетов в виде таблицы 15.1, адаптированной к условиям задачи.
4.Оценить значения погрешностей сеточных функций, используя правило Рунге.
5.Построить и включить в отчет графики сеточных функций, полученных различными методами для m=20.
Вычисления выполняются в соответствии с расчетными формулами (15.7),
(15.8) и (15.9). Отдельно заполняется табл. 15.1 для значения m=10 и m=20. Во всех методах y0=1 из начального условия. В методе Адамса значения сеточной функции y1 и y2 равны соответствующим величинам, полученным в методе Рун-
ге-Кутта.
Таблица 15.2
Решение ОДУ методами Эйлера, Рунге-Кутта и Адамса для m=10
|
|
Метод Эйлера |
|
Метод Рунге-Кутта |
|
|
Метод |
|||||||||
|
|
|
|
|
Адамса |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
x |
f (x |
, y |
) |
y |
n |
k |
k |
2,n |
k |
k |
4,n |
y |
n |
y |
n |
т |
n |
n |
|
|
1,n |
|
3,n |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
0 |
0 |
|
|
4 |
|
1 |
1,6 |
0,7200 |
0,9529 |
0,5243 |
|
1 |
|
1 |
||
1 |
0,4 |
0,9846 |
|
2,6 |
0,5356 |
0,3597 |
0,3748 |
0,2519 |
1,9117 |
1,9117 |
||||||
2 |
0,8 |
0,4810 |
2,9938 |
0,2518 |
0,1657 |
0,1687 |
0,1042 |
2,2878 |
2,2878 |
|||||||
3 |
1,2 |
0,2009 |
3,1862 |
0,1041 |
0,0574 |
0,0579 |
0,0254 |
2,4586 |
2,7228 |
|||||||
4 |
1,6 |
0,0490 |
3,2666 |
0,0254 |
0,0063 |
0,0063 |
0,0000 |
2,5186 |
2,7905 |
|||||||
5 |
2 |
|
|
0 |
3,2862 |
0 |
0,0063 |
0,0063 |
0,0253 |
2,5271 |
2,8140 |
|||||
|
|
|
|
|
|
|
|
|
82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
2,4 |
0,0487 |
3,2862 |
0,0252 |
0,0565 |
0,0562 |
0,0988 |
2,5355 |
2,8226 |
7 |
2,8 |
0,1936 |
3,3057 |
0,0987 |
0,1513 |
0,1498 |
0,2099 |
2,5938 |
2,8757 |
8 |
3,2 |
0,4256 |
3,3831 |
0,2098 |
0,2750 |
0,2719 |
0,3394 |
2,7456 |
3,0160 |
9 |
3,6 |
0,7204 |
3,5534 |
0,3391 |
0,4064 |
0,4022 |
0,4676 |
3,0194 |
3,2728 |
10 |
4 |
|
3,8415 |
|
|
|
|
3,4234 |
3,6550 |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
Таблица 15.2
Решение ОДУ методами Эйлера, Рунге-Кутта и Адамса для m=20
|
|
Метод Эйлера |
|
Метод Рунге-Кутта |
|
|
Метод |
||||||||||
|
|
|
|
|
Адамса |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
x |
f (x |
, y |
n |
) |
y |
n |
k |
k |
2,n |
k |
k |
4,n |
y |
n |
y |
n |
т |
n |
|
|
|
1,n |
|
3,n |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
0 |
0 |
|
|
|
4 |
|
1 |
0,8 |
0,5157 |
0,5740 |
0,4117 |
|
1 |
|
1 |
||
1 |
0,2 |
|
1,8 |
|
1,8 |
0,4140 |
0,3262 |
0,3344 |
0,2695 |
1,5652 |
1,5652 |
||||||
2 |
0,4 |
1,1852 |
2,16 |
0,2696 |
0,2212 |
0,2239 |
0,1846 |
1,8993 |
1,8993 |
||||||||
3 |
0,6 |
0,8177 |
2,3970 |
0,1846 |
0,1525 |
0,1537 |
0,1265 |
2,1234 |
2,1973 |
||||||||
4 |
0,8 |
0,5624 |
2,5606 |
0,1265 |
0,1034 |
0,1039 |
0,0840 |
2,2773 |
2,3523 |
||||||||
5 |
1 |
0,3741 |
2,6730 |
0,0840 |
0,0668 |
0,0671 |
0,0523 |
2,3815 |
2,4614 |
||||||||
6 |
1,2 |
0,2329 |
2,7479 |
0,0523 |
0,0396 |
0,0397 |
0,0289 |
2,4488 |
2,5283 |
||||||||
7 |
1,4 |
0,1288 |
2,7944 |
0,0289 |
0,0200 |
0,0200 |
0,0128 |
2,4888 |
2,5680 |
||||||||
8 |
1,6 |
0,0567 |
2,8202 |
0,0128 |
0,0072 |
0,0072 |
0,0032 |
2,5091 |
2,5881 |
||||||||
9 |
1,8 |
0,0141 |
2,8316 |
0,0032 |
0,0008 |
0,0008 |
|
0 |
2,5165 |
2,5955 |
|||||||
10 |
2 |
|
|
|
0 |
2,8344 |
0 |
0,0008 |
0,0008 |
0,0032 |
2,5176 |
2,5966 |
|||||
11 |
2,2 |
0,0141 |
2,8344 |
0,0032 |
0,0071 |
0,0071 |
0,0127 |
2,5186 |
2,5976 |
||||||||
12 |
2,4 |
0,0564 |
2,8372 |
0,0127 |
0,0197 |
0,0197 |
0,0283 |
2,5260 |
2,6048 |
||||||||
13 |
2,6 |
0,1264 |
2,8485 |
0,0283 |
0,0383 |
0,0382 |
0,0495 |
2,5460 |
2,6242 |
||||||||
14 |
2,8 |
0,2227 |
2,8738 |
0,0495 |
0,0621 |
0,0619 |
0,0756 |
2,5845 |
2,6617 |
||||||||
15 |
3 |
0,3427 |
2,9183 |
0,0756 |
0,0901 |
0,0899 |
0,1052 |
2,6466 |
2,7224 |
||||||||
16 |
3,2 |
0,4821 |
2,9868 |
0,1052 |
0,1212 |
0,1208 |
0,1372 |
2,7368 |
2,8106 |
||||||||
|
|
|
|
|
|
|
|
|
|
83 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
3,4 |
0,6357 |
3,0833 |
0,1372 |
|
0,1538 |
0,1533 |
0,1700 |
2,8579 |
2,9290 |
|
|
18 |
3,6 |
0,7974 |
3,2104 |
0,1700 |
|
0,1867 |
0,1862 |
0,2027 |
3,0114 |
3,0795 |
|
|
19 |
3,8 |
0,9615 |
3,3699 |
0,2026 |
|
0,2188 |
0,2183 |
0,2342 |
3,1978 |
3,2625 |
|
|
20 |
4 |
|
3,5622 |
|
|
|
|
|
3,4163 |
3,4772 |
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
||
|
Оценка абсолютной погрешности |
|
|
|
|
|
||||||
|
Оценка абсолютной погрешности решения 2m, полученного для m=20 на |
|||||||||||
правом конце отрезка выполняется с помощью соотношения (15.10). |
|
|
||||||||||
|
Метод Эйлера |
2m≤0,3. |
|
|
|
|
|
|
|
|
||
|
Метод Рунге-Кутта 2m ≤0,0005. |
|
|
|
|
|
|
|||||
|
Метод Адамса |
2m ≤0,03. |
|
|
|
|
|
|
||||
Графики сеточных функций
6. Варианты заданий
Номер |
|
Уравнение |
|
y(0) |
a |
b |
варианта |
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. |
u x 2u |
|
1 |
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. |
u x2 |
u |
|
1 |
0 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
|
|
|
3. |
u |
x u |
|
|
|
|
|
|
|
|
|
||
u x |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|||
|
u |
|
|
1 |
|
|
sin(x) |
|
u |
|
|
||
4. |
cos(x) |
cos(x) |
|
|
|||||||||
|
|
|
|
|
|
|
|||||||
|
u |
6 (x 1)u |
|
|
|
|
|||||||
5. |
|
(x 1) |
2 |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|||||||
|
u x u |
|
|
|
u |
|
|
|
|
||||
6. |
(x 0,2) |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
||||||
|
u |
|
|
1 |
|
|
|
|
|
u |
0,25u |
2 |
|
|
|
|
|
|
|
|
|
|
|
||||
7. |
(x 0,1) |
2 |
|
|
|
||||||||
|
(x 0,1) |
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8. |
u 1 sin(x u) |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 u |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
9. |
u |
2x 1 |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
||||
|
u u xu |
|
|
|
|
|
|
|
|||||
10. |
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11. |
u 3u x |
3 |
u |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 u |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
12. |
u |
x |
2 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|||
13. |
u u sin(2x) |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
14. |
u xu 2xu |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15.u u sin(2x)
|
|
|
u |
|
|
|
u |
16. |
u |
|
|
xe |
x 1 |
||
|
|
|
|||||
|
|
|
|
|
|
||
|
x |
1 |
|
|
|
||
|
|
|
|
|
|||
|
u |
xu |
|
|
|
||
17. |
x |
1 |
|
|
|
||
|
|
|
|
||||
|
|
|
|
|
|||
18. |
u 1 sin(1,5x u) |
||||||
|
|
|
|
|
|
|
|
|
|
1 u |
|
|
|
||
|
|
|
|
2 |
|
|
|
19. |
u |
x |
3 |
1 |
|
|
|
|
|
|
|||||
|
|
|
|
|
|||
|
|
|
1 u |
2 |
|
||
|
|
|
|
|
|
|
|
20. |
u |
(x 1)u |
|
||||
|
|
||||||
|
|
|
|||||
85
2 |
0 |
5 |
1 |
0 |
1 |
4 |
0 |
4 |
5 |
0 |
3 |
3 |
0 |
2 |
1 |
0 |
4 |
2 |
0 |
4 |
1 |
0 |
5 |
2 |
0 |
1 |
2 |
0 |
4 |
1 |
0 |
3 |
1 |
0 |
3 |
1 |
0 |
3 |
1 |
0 |
1 |
1 |
0 |
3 |
2 |
0 |
4 |
3 |
0 |
3 |
1 |
0 |
5 |
|
|
|
21.
22.
23.
24.
25.
|
xu |
2 |
|||
u |
|
||||
x |
2 |
1 |
|||
|
|||||
|
|
|
|
||
|
2 u |
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
u |
(x 2) |
2 |
u |
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|||
u (2 u)tg(x) |
|
|
|||||
u 1 sin(2x u) |
|
||||||
u |
1 |
|
|
|
|
u |
u |
|
|
|
|
|
|
|
2 |
|
(x 0,1) |
2 |
|
(x 0,1) |
|
||
|
|
|
|
||||
0,5 |
0 |
2 |
5 |
0 |
5 |
1 |
0 |
5 |
1 |
0 |
4 |
3 |
0 |
1 |
|
|
|
86
