П13_14
.pdfОдношаговые методы решения ОДУ
Неявный метод второго порядка:
y |
|
= y |
|
+ |
h |
[ f (x |
, y |
|
) + f (x |
|
, y |
|
)] |
i +1 |
i |
|
i |
i +1 |
i +1 |
||||||||
|
|
2 |
i |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
Метод предиктор–корректор:
~ = |
yi |
+ |
h |
f |
( |
xi , yi |
) |
«предсказываем» |
|
||||||||
y |
2 |
|
|
|
||||
|
|
|
|
|
|
|
yi +1 = yi |
~ |
«исправляем» |
+ h f (xi +1 2 , y ) |
||
где |
xi +1 2 = xi + h / 2 |
|
11
Одношаговые методы решения ОДУ
МЕТОДЫ РУНГЕ-КУТТЫ
Многоэтапные методы повышенного порядка точности
«Этап» - вычисление правой части уравнения
k1 = f (xi , yi ) |
|
k2 = f (xi + α 2 h, yi + β 21k1h ) |
|||||
k3 |
= f (xi + α 3h, yi |
+ β 31k1h + β 32 k2 h ) |
|||||
……………………………………………. |
|||||||
|
|
|
|
|
|
n −1 |
|
kn |
= |
|
+ |
α n h, yi |
+ |
|
|
|
f xi |
|
|
∑βnj k j h |
|||
|
|
|
|
n |
|
j =1 |
|
|
|
yi +1 = yi + h∑c j k j |
|
||||
αn, βnj, cn, |
|
|
|
j =1 |
|
|
|
– параметры, которые подбирают так, |
чтобы метод был как можно более точным 12
ПРИМЕРЫ МЕТОДОВ РУНГЕ-КУТТЫ
Двухэтапный метод (второго порядка точности)
|
i |
= f (x i |
|
y i ), |
|
|
i |
|
|
|
|
h |
|
h |
i |
||||
k |
|
, |
|
k |
2 |
= |
|
f x i |
+ |
|
, y i |
+ |
|
k |
1 |
|
|||
|
|
|
2 |
2 |
|||||||||||||||
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y |
i |
+1 |
= y |
i |
+ hk i |
, |
i = 0 , 1, 2 ,... |
|
|
|
|
||||||
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
Трехэтапный метод (третьего порядка точности)
k1= f (xi ,yi ), k2= f (xi+h/ 2,yi+hk1/ 2), k3 = f (xi+h,yi -hk1+2hk2 )
yi +1 = yi + h (k1 + 4k2 + k3 ), i = 0,1, 2,...
6
Четырехэтапный метод (четвертого порядка точности)
|
k1= f (xi ,yi ), k2= f (xi+h/ 2,yi+hk1 / 2), |
|
|||
k3 = f (xx+h/ 2,yi+hk2 / 2), |
k4 = f (xi+h,yi+hk3 ), |
|
|||
yi +1 |
= yi + |
h |
(k1 + 2k2 + |
2k3 + k4 ), i = 0,1, 2,... |
13 |
|
|
||||
6 |
|
||||
|
|
|
|
|
Пример 1: решение в MathCAD
Метод предиктор-корректор
50
40
v 30
u( t) 20
10
0
2 |
4 |
6 |
8 |
10 |
12 |
z , t
z := pr_corr(1, 10, 10, 1, f) 0 |
v := pr_corr(1, 10, 10, 1, f) 1 |
Пример 1: решение в MathCAD
Трехэтапный метод Рунге-Кутты
ОБОБЩЕНИЕ МЕТОДА ЭЙЛЕРА НА СИСТЕМУ ОДУ
|
dy j |
|
|
( |
|
) |
|
|
|
Все условия |
|
= |
f j |
x, y1 |
j |
= |
1, 2,..., n |
заданы в |
|||
|
|
|||||||||
|
dx |
|
, y2 ,..., yn , |
|
одной точке! |
|||||
|
|
|
|
|
|
|
|
|||
y j (x) − искомые |
функции, |
|
y j ( x0 ) = y 0j |
начальные условия |
ЗАДАЧА КОШИ → ИСПОЛЬЗУЕМ МЕТОД ЭЙЛЕРА
ПРИМЕР: Система 2х ОДУ первого порядка:
y′ = f ( x, y, z) |
|
|
|
. |
|
|
|
|
|
|
, |
x [a, b]; y(a) = y 0 , |
||
z′ = g (x, y, z) |
|
|
|
|
Обобщение метода Эйлера: |
||||
Реализация: |
|
|
|
|
|
y =y0, z |
0 |
=z0, |
|
|
0 |
|
|
yi+1=yi+h f(xi , yi ,zi),
z(a) = z 0
yi +1 − yi = f (xi , yi , zi ), h
zi +1 − zi = g (xi , yi , zi ). h
zi+1=zi+h g(xi, yi, zi). i=0, 1,..., M-1. |
16 |
|
ОБОБЩЕНИЕ МЕТОДОВ РУНГЕ-КУТТЫ НА СИСТЕМУ ОДУ
Система 2х ОДУ первого порядка:
y′ = f (x, y, z) |
, x [a, b]; y(a) = y 0 , z(a) = z 0 |
|
|
z′ = g (x, y, z) |
|
Обобщение двухэтапного метода Рунге-Кутты:
|
|
|
. |
|
|
|
|
|
|
|
k1 = f (xi , yi , zi ), |
l1 = g (xi , yi , zi ), |
|
||||||||
k2 = f (xi + h, yi + hk1 , zi + hl1 ), |
|
|||||||||
l2 = g (xi + h, yi + hk1 , zi + hl1 ) |
|
|
|
|
||||||
y |
= y + h |
k1 + k2 |
, z |
|
= z |
|
+ h |
l1 + l2 |
. |
|
|
i +1 |
i |
|
|
||||||
i +1 |
i |
2 |
|
|
2 |
|
|
|||
|
|
|
|
|
|
|
17 |
УРАВНЕНИЕ ВТОРОГО ПОРЯДКА:
y′′ + p(t) y′ + q(t ) y = r(t ), t [a, b]
2 дополнительных условия на функцию y заданы в одной точке x=a
|
0 |
′ |
0 |
- начальные данные |
y(a) = y , |
|
|||
y (a) = z |
|
|
||
Задача Коши с помощью замены: z(t)=y′(t), z′(t)=y′′(t) |
||||
|
|
|
. |
|
сводится к системе 2х ОДУ первого порядка: |
||||
y′ = f (t, y, z) ≡ z |
|
|
||
|
|
|
|
|
z′ = g (t, y, z) ≡ − p(t )z − q(t ) y |
− r (t ) |
|||
y(t), z(t) – искомые функции; |
||||
f ( t, y, z ), g (t ,y ,z) –функции правых частей; |
||||
y0, z0– начальные данные |
18 |
ПРИМЕР 2. Постановка задачи
Задача Коши для ОДУ 2 порядка
|
d 2u |
+ 2 |
du |
+ u(x) = x, u(0) = 1, |
|
|
du |
(0) = 0 |
||||||
|
dx 2 |
|
|
|
|
|
||||||||
|
|
dx |
|
|
|
|
|
|
|
dx |
|
|||
Точное решение |
u(x) := 3 e− x + 2 x e− x + x − 2 |
|||||||||||||
|
|
|
Проверка точного решения |
|
||||||||||
|
Подставляем в |
|
d2 |
|
d |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
u(x) + 2 |
|
|
u(x) + u(x) − x → 0 |
|||
|
|
|
|
|
|
dx2 |
|
|
||||||
|
уравнение |
|
|
dx |
|
Подставляем в |
u(0) |
= 1 x := 0 |
d |
u(x) → 0 |
начальные |
|
|||
|
|
dx |
данные
ПРИМЕР 2. Решение методом Эйлера
Приводим к системе 2х ОДУ. Правые части:
F(x, y , z) := z G(x, y , z) := x − 2 z − y
Решаем систему методом Эйлера
y |
1 |
|
u( t)
0.9
0.8
0 |
0.2 |
0.4 |
0.6 |
0.8 |
x, t
x := euler(0, 1, 10, 1, 0, F, G) 0 |
y := euler(0, 1, 10, 1, 0, F, G) 1 |