шагов пропорциональна |
N O h2 , поскольку |
N 1/ h , |
то S O h , т.е. метод |
Эйлера — метод первого |
порядка |
точности по h. |
|
|
Известны различные уточнения метода Эйлера. Модификации
данных методов направлены на уточнение направления |
|
перехода из точки xi , yi |
в точку xi 1 , yi 1 . Например, в |
методе Эйлера-Коши используют следующий порядок вычислений:
|
yi |
h f xi , yi , |
|
|
yi 1 |
(VIII.27) |
|||
y |
y |
h |
f xi , yi f xi 1, yi 1 |
|
|
. |
|||
|
||||
i 1 |
i |
|
2 |
|
|
|
|
|
|
Геометрически это означает, что определяется направление интегральной кривой в исходной точке xi , yi и во
вспомогательной точке, xi 1 , yi 1 а в качестве окончательного
берется среднее значение этих направлений. |
|
|
||||
Пример |
VIII.1. |
Найти |
решение |
задачи |
Коши |
|
дифференциального уравнения |
|
|
|
|||
|
|
dy |
x2 , y 0 1,3 |
|
|
|
|
|
dx |
|
|
||
|
|
|
|
|
|
|
методами Эйлера и Эйлера-Коши. 1. Метод Эйлера.
• Создайте файл Euler.m (листинг VIII.1), содержащий описание функции, возвращающей решение дифференциального уравнения методом Эйлера.
Листинг VIII.1. Файл Euler_g9.m function [X,Y]=Euler_g9(y0,x0,xl,N) dx=(xl-x0)/N;
х(1)=х0; у(1)=у0; for i=l:N
x(i+l)=x(l)+dx*i;
y(i+l)=y(i)+dx*F9(x(i));
end;
X=x;
Y=y;
function z=F9(x) z=x.^2;
45 |
|
|
|
|
|
|
|
|
|
|
|
|
40 |
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|||||||||||
35 |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|||||||||
25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
0,5 1 |
1,5 2 2,5 |
3 |
3,5 4 4,5 |
5 |
|
|
|
|
Рис. VIII.2. Визуализация точного (1) и численного (2) |
|
||||||||
решений задачи Коши дифференциального уравнения |
dy |
x2 |
, |
||||||
dx |
|||||||||
|
|
y 0 1,3 |
методом Эйлера |
|
|
|
|||
|
|
|
|
|
|
||||
• Выполните следующую последовательность команд: |
|
|
|
||||||
» х0=0; % левая граница отрезка интегрирования |
|
|
|
||||||
» xl=5; |
% правая граница отрезка интегрирования |
|
|
|
|||||
»у0=1.3; % начальное условие
»N=50; % число узлов разбиения отрезка интегрирования
»[X Y]=Euler_g9(y0,x0,xl,N); % нахождение численного
% решения задачи Коши
»i=l:length(X);
»Z(i)=yO+l/3*X(i).^3; % вычисление значений точного решения
179
178
»plot(X,Z,X,Y,':') % визуализация численного и точного решений
% (рис. VIII.2)
»plot(X,abs(Z-Y)) % визуализация разности между численным % и точным решениями ДУ (рис. VIII.3)
1,4
1,2
1
0,8
0,6
0,4
0,2
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
0 |
0,5 |
1 |
1,5 |
2 |
2,5 |
3 |
3,5 |
4 |
4,5 |
5 |
|
|
|||||||
Рис. VIII.3. Разность между численным и точным решениями |
|||||||||||||||||||
задачи Кош дифференциального уравнения |
dy |
x2 , y 0 1,3 |
|||||||||||||||||
dx |
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
2. Метод Эйлера-Коши.
• Создайте файл EulerKoshi.m (листинг VIII.2), содержащий описание функции, возвращающей решение дифференциального уравнения методом Эйлера-Коши.
Листинг_ VIII.2. Файл EulerKoshi.m function [X,Y]=EulerKoshi(y0,x0,xl,N) dx=(xl-x0)/N;
x( l)=x0; y( l)=y0; for i=2:N
x(i)=x(l)+dx*(i-l); Z=y(i-l)+dx*F9(x(i-l) ,y(i-l)) ;
180
y(i)=y(i-l)+(F9(x(i-l),y(i-l))+F9(x(i),Z))*dx/2; end;
X=x;
Y=y;
function z=F9(x,y); z=x.^2;
45
40
35
30
25
20
15
10
5
0
0 |
0,5 |
1 |
1,5 |
2 |
2,5 |
3 |
3,5 |
4 |
4,5 |
5 |
Рис. VIII.4. Визуализация точного и численного решений задачи Коши дифференциального уравнения dydx x2 , y 0 1,3
методом Эйлера-Коши
• Выполните следующую последовательность команд:
»х0=0;%левая граница отрезка интегрирования
»xl=5;%правая граница отрезка интегрирования
»уО=1.3; % начальное условие
»N=50;% число узлов разбиения отрезка
% интегрирования
» |
[X |
Y]=EulerKoshi(y0,x0,xl,N); |
» |
% |
нахождение численного решения задачи Коши |
i=l:length(X); |
||
|
|
181 |
»Z(i)=y0+l/3*X(i).^3;
%вычисление значений точного решения
»plot(X,Z,X,Y,':')
%визуализация точного и численного решений
%(рис. VIII.4)
»plot(X,abs(Z-Y))
%визуализация разности между численным и
%точным решениями ДУ (рис. VIII.5)
x10
9
8
7
6
5
4
3
2
1
0
0 |
0,5 |
1 |
1,5 |
2 |
2,5 |
3 |
3,5 |
4 |
4,5 |
5 |
Рис. VIII.5. Разность между точным решением задачи Коши дифференциального уравнения dydx x2 , y 0 1,3 и численным решением, полученным методом Эйлера-Коши
Из сравнения рис. VIII.3, VIII.5 видно, что погрешность, как и ожидалось, уменьшилась в 102 раз (h = 0.1).
8.4. Метод Рунге-Кутта
Метод Эйлера и метод Эйлера-Коши относятся к семейству методов Рунге-Кутта. Для построения данных методов можно использовать следующий общий подход. Фиксируем
некоторые числа: |
p1,..., pq ; ij , 0 j q. |
|
|
|
2 ,..., q ; |
|
|
Последовательно вычисляем: |
|
||
k1 |
h h f x, y , |
|
|
k2 |
h h f x 2 h, y 12 k1 h , |
|
|
|
x q h, y q1k1 h ... qq 1kq 1 h |
||
kq h h f |
|||
и полагаем: |
|
|
|
|
|
q |
|
y x h y x pi ki h z h . |
(VIII.28) |
||
|
|
i 1 |
|
Рассмотрим вопрос о выборе параметров i , pi , ij . |
||||||||||||
Обозначим |
h y x h z h . |
|
|
|
||||||||
|
|
|
|
|||||||||
Будем предполагать, что |
|
|
|
x |
0 0, |
|
||||||
|
|
|
|
|
||||||||
|
|
|
|
|
|
|||||||
0 |
0 ... |
|
|
|||||||||
а x 1 0 0 |
для некоторой функции f(x, у). |
|
||||||||||
По формуле Тэйлора справедливо равенство |
|
|||||||||||
s |
i 0 |
i |
|
s 1 |
0h |
|
s 1 |
|
|
|||
h |
|
h |
|
|
|
|
|
|
h |
|
, |
(VIII.29) |
i! |
|
s 1 ! |
|
|||||||||
i 0 |
|
|
|
|
|
|
|
|||||
где 0 < θ < 1.
При q = 1 будем иметь:
183
182
h y x h y x p1 h f x, y ,
0 0,
0 y x h p1 f x, y h 0 ,
h y x h .
Ясно, что равенство 0 0 выполняется для любых функций f x, y лишь при условии, что р1 =1. При данном
значении р1 из формулы (VIII.28) получаются формулы (VIII.24), (VIII.25) метода Эйлера. Погрешность данного метода на шаге согласно (VIII.29) равна
h x h h2 . 2
Рассмотрим случай q = 2 , тогда
h y x h y x p1hf x, y p2hf x, y ,
где |
x x 2 h, |
y y 21 h f x, y . |
Согласно исходному дифференциальному уравнению y f ,
y f x dfdy dydx f x f y f x, y ,
y |
|
dfy |
df |
|
|
||
fxx fxy f f |
|
|
fy dx |
|
|
||
|
dx |
|
|||||
fxx |
fxy f f fxy |
fyyf fy fx fy f |
(VIII.30) |
||||
fxx 2 fxy f fyy f |
|
2 |
|
|
|
|
|
|
|
fy y . |
|
|
|||
184
Вычисляя производные |
функции |
h и, подставляя в |
|
|
|
|
|
выражения для h , h , |
h значение h 0 , получаем: |
||
0 0, |
p2 f , |
|
|
|
(VIII.31) |
||
0 1 p1 |
|||
|
|
1 2 p2 |
21 f y f . |
0 1 2 p2 2 f x |
|||
Требование |
|
|
|
|
|
||
|
0 0 0 0 |
||
будет выполняться для всех f x, y только в том случае, если
одновременно справедливы следующие три равенства относительно четырех параметров:
1 |
p1 p2 |
0, |
|
1 |
2 p2 2 |
0, |
(VIII.32) |
1 |
2 p2 21 |
0 . |
|
Задавая произвольно значения одного из параметров и определяя значения остальных параметров из системы (VIII.32), можно получать различные методы Рунге-Кутта с порядком
погрешности |
s 2 . |
|
Например, при p |
1 |
из (VIII.32) |
|||
|
|
|||||||
|
|
|
|
|
|
1 |
2 |
|
|
|
1 |
|
|
|
|
|
|
получаем: p2 |
|
, |
2 |
1, 21 |
1 |
|
|
|
2 |
|
|
||||||
|
|
|
|
|
|
|
|
|
Для выбранных значений параметров формула (VIII.28) приобретает следующий вид:
y |
i 1 |
y |
i |
h |
f xi , yi f xi 1, yi* 1 . |
|
|
|
|
2 |
|
||
Здесь yi 1 записано |
вместо |
y x h , yi — вместо |
y x , а с |
|||
помощью у*i+1 обозначено выражение yi h f xi , yi .
Таким образом, для рассматриваемого случая приходим к расчетным формулам (VIII.27) метода Эйлера-Коши. Из (VIII.29) следует, что главная часть погрешности на шаге есть
185
0 h3 / 6,
т. е. погрешность пропорциональна третьей степени шага.
На практике наиболее часто используют метод Рунге-Кутта с q 4, s 4
Данный метод реализуется в соответствии со следующими |
|||||||||||||||||
расчетными формулами: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
k1 h f x, y , |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
h |
|
|
|
|
k |
1 |
|
|
|
|
|
|
|
|
|
k2 |
h f x |
|
, y |
|
|
|
, |
|
|
|
|
|
|
||||
2 |
2 |
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
h |
|
|
|
|
k |
2 |
|
|
|
|
|
|
|
|
|
k3 |
h f x |
|
|
, y |
|
|
|
, |
|
|
|
|
|
(VIII.33) |
|||
|
2 |
2 |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
k4 |
h f x h, y k3 , |
|
|
|
|
|
|
|
|||||||||
y z h y x |
1 |
|
k |
1 |
|
2k |
2 |
2k |
3 |
k |
4 |
. |
|||||
|
|
||||||||||||||||
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|||||
Погрешность рассматриваемого метода Рунге-Кутта на шаге пропорциональна пятой степени шага.
Геометрический смысл использования метода Рунге-Кутта с
расчетными формулами состоит |
в |
следующем. Из |
точки xi , yi сдвигаются в направлении, |
определяемом углом |
|
α1, для которого tg 1 f xi , yi . |
На |
этом направлении |
выбирается точка с координатами |
|
|
|
|
|
|
|
|
||||
|
|
|
h |
|
|
k |
1 |
|
|
|
|
|
|
xi |
|
|
, yi |
|
|
|
. |
|
|
|
|
|
2 |
2 |
|
|
|
|||||||
|
|
|
|
|
|
|
||||||
Затем из точки |
xi , yi |
|
|
сдвигаются в направлении, |
||||||||
определяемым углом α2, для которого |
k |
|
|
|||||||||
|
|
|
|
h |
|
|
|
1 |
|
|||
|
tg 2 |
f xi |
|
|
, |
yi |
|
, |
||||
|
2 |
2 |
||||||||||
|
|
|
|
|
|
|
|
|||||
|
|
|
|
186 |
|
|
|
|
|
|
|
|
и на |
|
этом |
направлении |
выбирается |
точка |
с |
координатами |
|||||||||
|
|
h |
|
k |
1 |
|
|
|
|
|
xi , yi , |
|
||||
xi |
|
|
, yi |
|
. Наконец, из точки |
|
сдвигаются в |
|||||||||
2 |
2 |
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
направлении, определяемом углом α3, для которого |
||||||||||||||||
|
|
|
|
|
|
|
|
h |
|
|
|
k |
1 |
|
|
|
|
|
|
|
|
|
tg 3 |
f xi |
|
, yi |
|
|
|
, |
|
|
|
|
|
|
|
|
|
2 |
2 |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
и на |
|
этом |
направлении |
выбирается |
точка |
с |
координатами |
|||||||||
xi h, yi k3 |
. Этим задается |
еще |
|
|
одно |
|
направление, |
|||||||||
определяемое |
|
углом |
α4, |
|
|
для |
|
|
которого |
|||||||
tg 4 |
f xi h, yi k3 . |
Четыре |
|
полученные |
направления |
|||||||||||
усредняются в соответствие с (VIII.33). На этом окончательном направлении и выбирается очередная точка
xi 1 , yi 1 xi h, yi y
Пример VIII.2. Найти решение задачи Коши дифференциального уравнения
dydx x2 , y 0 1.3
методом Рунге-Кутта четвертого порядка.
1. Создайте файл RungeKutt4.m (листинг VIII.3),
содержащий описание функции, возвращающей решение дифференциального уравнения методом Рунге-Кутта четвертого порядка.
Листинг VIII.3. Файл RungeKutt4,m function [X,У]=RungeKutt4(y0,x0,xl,N) dx=(xl-x0)/N;
x(l)=x0; У(1)=У0; for i=2:N
x(i)=x(l)+dx*(i-l); kl=dx*F9(x(i-l),y(i-l)); k2=dx*F9(x(i-l)+dx/2,y(i-l)+kl/2);
187