Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы численных методов. Практикум

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
y
= yi + h * f(xi + h/2 , yi + h/2 * y'i)
i+1
= xi + h
x
i+1
Модифицированный метод Эйлера согласуется с разложением в ряд
2
а h
Тейлора вплоть до членов порядк
включительно.
Блок-схема модифицированного метода Эйлера
Вводx0,y0,xk,n
x=x0:y=y0:h=(xk–x0)/n
x<xk
Выводx,y
x1=x+h/2:y1=y+h*f(x,y)/2
y=y+h*f(x1,y1)
Конец
61
xyy2
y
Пример. Решить то же уравнение
Решение
1)
Выбираем число разбиений n = 5. Тогда h = (1 – 0) / 5 = 0,2.
2)
n x y x1=x+h/2 y' y1=y+h/2*y' f(x1,y1) h*f(x1,y1)
0 1.00 2.0000 1.1000 1.0000 2.1000 1.0524 0.2105
1 1.20 2.2105 1.3000 1.1247 2.3229 1.2037 0.2407
2 1.40 2.4512 1.5000 1.3089 2.5821 1.4203 0.2841
3 1.60 2.7353 1.7000 1.5654 2.8918 1.7161 0.3432
4 1.80 3.0785 1.9000 1.9091 3.2694 2.1071 0.4214
5 2.00 3.4999
3) Если выбрать число разбиений n = 10, то h = (1 – 0)/10 = 0,1.
n x y x1=x+h/2 y' y1=y+h/2*y' f(x1,y1) h*f(x1,y1)
0 1,00 2,0000 1,050 1,0000 2,0500 1,0256 0,1026
1 1,10 2,1026 1,150 1,0562 2,1554 1,0883 0,1088
2 1,20 2,2114 1,250 1,1261 2,2677 1,1653 0,1165
3 1,30 2,3279 1,350 1,2110 2,3885 1,2580 0,1258
4 1,40 2,4537 1,450 1,3126 2,5193 1,3683 0,1368
' модифицированным методом Эйлера.
f(x)
Нет
Да
n x y x1=x+h/2 y' y1=y+h/2*y' f(x1,y1) h*f(x1,y1)
5 1,50 2,5905 1,550 1,4325 2,6622 1,4977 0,1498 6 1,60 2,7403 1,650 1,5726 2,8189 1,6483 0,1648
7 1,70 2,9051 1,750 1,7348 2,9919 1,8220 0,1822
8 1,80 3,0873 1,850 1,9213 3,1834 2,0211 0,2021
9 1,90 3,2895 1,950 2,1343 3,3962 2,2478 0,2248
10 2,00 3,5142
6.3 Усовершенствованный метод Эйлера
В этом методе для расчета очередного приближения производится усреднение тангенсов углов наклона касательных в двух соседних точках:
1) Через точку x
+ h с тангенсом угла наклона tg(
x
i
проводится касательная до пересечения с прямой x
i,yi
) = f(xi , yi).
1
i+1
=
2) В полученной точке пересечения по методу Эйлера рассчитывается
значение функции y f(x
, y
) = f(xi+ h, yi+ h * yi').
i+1
i+1
3) Далее осуществляется возврат в точку x
= yi + h * y
i+1
' и вычисляется новая производная tg(
i
и через нее выполняется шаг
i,yi
) =
2
величиной h под углом наклона, тангенс которого есть среднее арифметическое двух предыдущих тангенсов:
tg() = [ tg(
) + tg(
1
) ]/2 = [ f(xi,yi) + f(xi + h,yi+h * yi')] / 2.
2
Таким образом, окончательное расчетное соотношение усовершенствованного метода Эйлера-Коши имеет вид
y
= yi + h * [ f(xi,yi) + f(xi+h,yi+h*yi') ]/2;
i+1
= xi + h.
x
i+1
Пример. Решить то же уравнение
x y
0 1,00 2,0000 1,200 1,0000 2,2000 2,1091 0,2109
1 1,20 2,3109 1,400 1,1254 2,4360 2,4119 0,2412
2 1,40 2,4521 1,600 1,3102 2,7141 2,8454 0,2845
3 1,60 2,7366 1,800 1,5673 3,0501 3,4371 0,3437
4 1,80 3,0804 2,000 1,9117 3,4627 4,2192 0,4219
5 2,00 3,5023
x1=x+h y'=f(x,y) y1=y+h*y' f1=f(x,y)+f(x1,y1) h*f1/2
' усовершенствованным методом Эйлера.
xyy2
y
62
6.4 Метод РунгеКутта
Алгоритм этого метода может быть представлен в виде:
y
= yi + h/6 * (k0 + 2k1 + 2k2 + k3), i = 0,1, …
i+1
k
= f(xi , yi);
0
k
= f(xi + h/2 , yi + k0 * h/2);
1
k
= f(xi + h/2 , yi + k1 * h/2);
2
k
= f(xi + h , yi + k2 * h).
3
Таким образом, метод Рунге-Кутта требует на каждом шаге
четырехкратного вычисления правой части уравнения f(x,y).
Метод Рунге-Кутта требует большого объема вычислений, однако это окупается повышенной точностью, что дает возможность проводить счет с большим шагом. Другими словами, для получения результатов с одинаковой точностью в методе Эйлера потребуется методе Рунге-Кутта.
значительно меньший шаг, чем в
*h/2)
0
xyy2
y
=f(xi+h/2,yi+k1*h/2) k3=f(xi+h,yi+k2*h)
k
2
Пример. Решить то же уравнение
n x y k0=f(xi,yi)
0 1,00 2,0000 1,000 1,0524 1,0602 1,1271
1 1,20 2,2117 1,1266 1,2058 1,2176 1,3148
2 1,40 2,4547 1,3140 1,4260 1,4422 1,5766
3 1,60 2,7423 1,5753 1,7273 1,7486 1,9277
4 1,80 3,0907 1,9260 2,1260 2,1530 2,3854
5 2.00 3.5197
' методом Рунге – Кутта.
=f(xi+h/2,yi
k
1
+k
63
6.5 Решение систем дифференциальных уравнений
Рассмотренные методы могут быть использованы также для решения систем дифференциальных уравнений. Это легко показать для случая системы двух уравнений вида:
dy/dx = f
dZ/dx = f
Начальные условия заданы в виде y(x
Если использовался метод Эйлера, то можно записать
= yi + h * f1(xi, yi, zi);
y
i+1
= zi + h * f2(xi, yi, zi).
Z
i+1
Если, например, использовался метод РунгеКутта, то получим
= yi + h/6 * (k0 + 2k1 + 2k2 + k3);
y
i+1
= zi + h/6 * (m0 + 2m1 + 2m2 + m3), i = 0,1, …
z
i+1
k0 = f1(xi , yi , zi) , m0 = f2(xi , yi, zi);
= f1(xi + h/2 , yi + k0/2 , zi + m0*h/2) , m1 = f2(xi + h/2 , y i + k0/2 , zi + m0 *h/2);
k
1
= f1(xi + h/2 , yi + k1/2 , zi + m1*h/2) , m2 = f2(xi + h/2 , yi + k1/2 , zi + m1*h/2);
k
2
= f1(xi + h , yi + k2 , zi + m2*h) , m3 = f2(xi + h , yi + k2 , zi + m2*h);
k
3
Пример. Решить систему двух дифференциальных уравнений
  
на интервале [1; 2] простым методом Эйлера при четырех разбиениях.
Решение.
Величина шага h = (2 – 1) / 4 = 0,25.
i x y
0 1,00 1,000 -1,000 -0,250 0,000 1,000 0,250 1 1,25 0,750 -0,625 -0,156 0,250 1,250 0,312 2 1,50 0,594 -0,048 -0,012 0,562 1,734 0,434 3 1,75 0,582 0,724 0,181 0,996 2,761 0,690 4 2,00 0,763 1,686
y’=(z-y)*x y’*h z z’=(z+y)*x z’*h
К решению систем уравнений сводятся также задачи Коши для уравнения высших порядков. Например, можно рассмотреть задачу Коши для уравнения второго порядка:
2
y/dx2 = f(x, y, dy/dx);
d
y(x
0
(x, y, z);
1
(x, y, z).
2
) = y0 , z(x0) = z0.
0
= xi + h
x
i+1
x
= xi + h.
i+1
xyzy
xyzz
) = y0 , y'(x0) = z0.
64
1y(x0) )('
0 z(x0) )('
Если ввести вторую неизвестную функцию z(x) = y'(x), то можно получить
dz/dx = f(x, y, z);
dy/dx = z;
y(x
) = y0 , z(x0) = z0.
0
6.6 Решение краевой задачи
На практике часто встречаются такие системы дифференциальных уравнений, у которых начальные условия заданы на разных концах интервала. В этом случае говорят о краевой задаче.
Решить краевую задачу простым использованием метода Эйлера нельзя. Для ее решения существуют специальные методы. Ниже будет разобран самый простой метод решения краевых задач – так называемый метод стрельбы.
Алгоритм метода:
1.
Для исходной системы на одном из концов интервала задаются начальные
условия для всех переменных. При этом для тех переменных, у которых начальные условия известны на другом конце интервала, нулевые приближения начальных условий задаются исходя из физического смысла (или произвольно).
Проводится интегрирование системы дифференциальных уравнений с
2.
принятыми начальными условиями, т.е. решают задачу Коши.
3.
Если разность между полученным в конце интервала значением переменной
с произвольно выбранными начальными условиями и точным значением начальных условий мала, то решение задачи закончено.
Если эта разность велика, то изменяют начальные приближения произвольно
4.
выбранных начальных условий и расчеты повторяют с пункта 2.
Таким образом, решение краевой задачи методом «пристрелки» сводится к многократному решению системы дифференциальных уравнений. Чтобы сократить количество расчетов при решении краевой задачи часто используют методы поиска корней уравнения (если на другом конце интервала задано начальное условие) или методы оптимизации (если на другом конце интервала задано несколько начальных условий).
Пример. Для иллюстрации можно решить ту же систему двух дифференциальных
уравнений, но со следующими начальными условиями: Z(x0 = 1) = 0 и Y (x0 = 2) = 1.
Решение. Один ответ уже получен – если взять Y(x
0,763 , а по условию в этой точке должно быть Y = 1,000.
65
= 1) = 1, то при Х=2 получили Y =
0
пристрелки или
одно
Если взять другое начальное приближение, например, y(x
=1) = 1.5, то после решения
0
получим y(x=2) = 1.144.
Из этих данных видно, что интервал поиска вполне определен – чтобы при х=2 было получено значение Y =1 необходимо на левой границе выбирать начальные условия в интервале [1; 1.5]. Для ускорения расчетов можно применить метод половинного деления.
При Y y(x
При Y y(x
При Y (x
= 1) = 1.25 получим Y (x = 2) = 0,9540. Интервал поиска [1.25: 1.50].
0
= 1) = 1.375 получим Y (x = 2) = 1,0493. Интервал поиска [1.25: 1.375].
0
= 1) = 1.3125 получим Y (x = 2) = 1,001. Тогда решение данной краевой задачи:
0
X Y Z
1,000 1,312 0,000
1,25 0,984 0,328
1,50 0,779 0,738 1,750 0,764 1,307 2,000 1,001 2,213
В отдельных случаях можно еще сократить количество расчетов. Для этого можно
1,2
1,1
1
0,9
Y(x=2)
0,8
0,7
1 1,1 1,2 1,3 1,4 1,5
c
1,31
Y(x=1)
применить графический анализ полученной информации. Строят график в координатах Y(x = 1) – Y(x = 2). Применив графическую интерполяцию по двум точкам: если Y(x если Y(x
= 1) = 1,5, то Y(x = 2) = 1,144, можно
0
получить при Y(x = 2) =1 искомое значение Y(x
= 1) = 1, то Y(x = 2) = 0,763 и
0
= 1) =
0
1,31.
6.7 Повышение точности результатов
На практике для повышения точности численного решения без существенного увеличения машинного времени используется состоит в том, что проводятся повторные расчеты по одной схеме с различными шагами. Уточненное решение в совпадающих при разных расчетах узлах строится с помощью проведенной серии расчетов.
Предположим, что проведены две серии расчетов по схеме порядка k соответственно с шагами h и h/2.В результате расчетов получены множества значений
сеточной функции yh и y
уточненное значение y
*
сеточной функции в узлах сетки с шагом h
h
.Тогда в соответствии с методом Рунге
h/2
вычисляется по формуле:
k
2
*
y
h
yy
2/
k
hh
12
k
hO
Порядок точности этого решения равен k + 1, хотя используемая схема имеет порядок точности
k. Таким образом, решение задачи на двух сетках
позволяет на порядок повысить точность результатов.
Для схемы Эйлера первого порядка точности (k = 1) формула Рунге принимает вид
66
метод Рунге. Он
1
).(
*
y
= 2y
h
– yh + O(h2).
h/2
Пример. Применить указанный алгоритм для уже решенного простым методом Эйлера
дифференциального уравнения
' на интервале
xyy2
y
[1, 2] при начальных условиях
y(1) = 2 с 5 и 10 разбиениями.
Решение.
Из имеющихся таблиц выбираем нужные результаты:
n x
y hy
2/h
yy 2/2
hh
0 1,0 2,000 2,000 2,000
1 1,2 2,205 2,020 2,390
2 1,4 2,436 2,422 2,450
3 1,6 2,705 2,675 2,735
4 1,8 3,024 2,971 3,077
5 2,0 3,409 3,322 3,496
Для схемы модифицированного метода Эйлера второго порядка точности
(k = 2) формула Рунге принимает вид
4
*
y
h
yy
hh
2/
3
3
).(
hO
Пример. Применить указанный алгоритм для уже решенного модифицированным
методом Эйлера дифференциального уравнения
' на интервале
xyy2
y
[1, 2] при
начальных условиях y(1) = 2 с 5 и 10 разбиениями.
Решение.
Из имеющихся таблиц выбираем нужные результаты:
n x
0 1,0 2,000 2,000 2,000
1 1,2 2,210 2,211 2,210
2 1,4 2,451 2,454 2,450
3 1,6 2,734 2,740 2,732
4 1,8 3,0784 3,087 3,075
5 2,0 3,499 3,514 3,494
y hy 3/)4(
2/h
2/ hh
yy
Таким образом видно, что решения, полученные разными методами,
практически совпадают.
67
6.8 Задания по теме: обыкновенные дифференциальные уравнения
Решить дифференциальное уравнение следующего вида
dyxcybxay '
на интервале [x0; xk] при начальном условии
y(x
) = y0. Число разбиений n = 5. Использовать следующие методы:
0
1. Простой метод Эйлера.
2. Модифицированный метод Эйлера.
3. Усовершенствованный метод Эйлера.
4. Метод Рунге-Кутта четвертого порядка.
№ варианта
1 2 -4 3 5 1 3 -5
2 3 -3 2 4 2 4 -4 3 4 -2 -2 3 1 3 -3 4 5 2 -3 2 2 4 -2
5 -2 3 -4 -2 1 3 -1 6 -3 4 -5 -3 1 3 1 7 -4 5 2 -4 -2 0 2
8 -5 4 3 -5 -3 -1 3
9 -4 3 4 -4 -1 1 4 10 -3 2 5 -3 -3 -1 5
11 -2 -2 4 -2 0 2 4 12 2 -3 3 2 1 3 3 13 3 -4 2 3 2 4 2
14 4 -5 -2 4 1 3 1 15 5 -4 -3 5 0 2 -1 16 4 -3 -4 4 -2 0 -2
17 3 -2 -5 3 0 2 -3 18 2 2 -4 2 1 3 -4 19 -2 3 -3 -2 2 4 -5
20 -3 4 -2 -3 5 7 -4
Коэффициенты уравнения Интервал
a b c d x
x
k
0
y(х
)
0
6.9 Задания по теме: обыкновенные решения краевой задачи
Решить простым методом Эйлера систему дифференциальных уравнений
на интервале от x
до xk при следующих начальных условиях
0
Число разбиений равно 5. Точность решения (подбирая начальное значение z) — 0,01.
68
: y(x0) : z(xk).
варианта
1
2
3
4
5
6
7
8
9
10
Система дифференциальных
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
уравнений
dy
dx dz
dx
dy
dx dz
dx
dy
 
dx
dz
 
dx
dy
dx dz
dx
dy
dx dz
dx
dy
dx dz
dx
dy
dx dz
dx
dy
dx dz
dx
dy
dx dz
dx
dy
dx dz
dx
Граничные
75.025.175.0
zyx
4.05.05.0

5.025.05.1
zyx
25.175.075.0
5.075.025.0
zyx

5.15.025.0

zyx

zyx
5.075.025.1
zyx
5.025.05.0
75.025.125.0
zyx
25.025.175.0
25.05.075.0

5.025.025.1
zyx

75.05.025.0

zyx
75.05.075.0
75.05.025.0

75.05.05.0
zyx
zyx
25.15.05.0

zyx
25.05.025.0

25.025.175.0
zyx
5.025.05.0
69
Интервал
x
0
zyx
0 2 2,75 -5,00
1 3 4,20 1,00
zyx
2 4 4,30 23,00
3 5 0,45 20,00
zyx
0 2 3,40 -22,00
zyx
1 3 3,60 2,50
zyx
2 4 0,95 -1,00
zyx
3 5 1,880 21,00
0 2 3,85 7,00
zyx
1 3 4,90 -3,00
условия
y(x
x
k
) Z(xk)
0
dy
 
11
12
13
14
15
16
17
18
19
20
21
dx
dz
 
dx
dy
 
dx
dz
 
dx
dy
 
dx
dz
 
dx
dy
 
dx
dz
 
dx
dy
 
dx
dz
 
dx
dy
 
dx
dz
 
dx
dy
 
dx
dz
 
dx
dy
 
dx
dz
 
dx
dy
 
dx
dz
 
dx
dy
 
dx
dz
 
dx
dy
 
dx
dz
 
dx
zyx
75.05.025.1
zyx
25.125.15.0
zyx
75.05.025.0
25.025.025.1
75.05.025.0
5.025.15.0
25.175.025.0
zyx
5.05.15.0
75.175.05.0
5.075.175.0
zyx
5.025.075.0
25.075.075.0


75.175.075.0
zyx
5.025.05.0
zyx
25.15.05.1
25.075.125.0

5.075.025.0
zyx
5.025.05.1
zyx
75.075.05.0
25.05.05.1

75.125.075.0
zyx
25.05.125.0
70
2 4 2,60 -11,00
3 5 0,70 10,00
zyx
zyx
0 2 2,05 33,00
zyx
zyx
1 3 0,35 16,00
zyx
2 4 1,25 -7,00
zyx
3 5 4,55 8,00
zyx
zyx
0 2 0,05 7,00
1 3 1,15 -4,00
zyx
zyx
2 4 4,45 -7,00
3 5 1,95 -14,00
zyx
zyx
0 2 3,85 -18,00
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]