Вторая пачка часть 121
В заключение краткого обзора отметим, что метод Эй¬лера с итерационным уточнением на¬и¬бо¬лее часто при¬меняется в вычислительной прак¬ти¬ке, так как дает по¬грешность порядка h2 , т.е. от¬но¬сится к методам вто¬ро¬го порядка, несмотря на то, что сам метод Эйлера яв¬ля¬ется методом пер¬во¬го порядка.
При решении обыкновенных диф¬фе¬ре¬н-ци¬аль¬ных урав¬нений методом Эйлера с ите¬ра¬ци-он¬ны¬м уточ¬не¬ни¬ем значения уk+1 удобно пользоваться под¬про¬грам¬мой-функцией, формальные значения па¬раметров ко¬то¬рой не приводятся в виду прос¬то¬ты и понятности пред-ла¬гаемой процедуры:
FUNCTION EYLER ( X,Y,H,EPS : REAL) : REAL;
VAR YK, Y0 : REAL;
DN : BOOLEAN;
BEGIN
DN := FALSE;
Y0 := Y + FUNC (X,Y) * H;
REPEAT
YK := Y + FUNC (X,Y0) * H * 0.5;
IF ABS ( YK - Y0) < EPS THEN
DN := TRUE;
Y0 := YK;
UNTIL DN;
EYLER := Y0;
END.
В подпрограмме-функции EYLER исполь¬зу¬ется про¬ц嬬ду¬ра-функция FUNC(х,у) для вы¬чис¬ления правой час¬ти за¬да¬чи. Ее следует составлять для каждого случая от¬дель¬но.
Для проверки и тестирования процедуры сос¬та¬вим таб¬ли¬цу приближенных зна¬чений интеграла диффе¬рен¬ци¬аль¬ного урав¬не¬ния у' = х + соs (0.7 - у) на отрезке [0.7; 1.7] с ша¬гом h= 0.1, удовлетворяющего начальным ус¬ло¬ви¬ям у0(0.7) = =1.1, используя метод Эйлера с уточ¬нением. Все вы¬чис¬ле¬ния произведем с точ¬нос¬тью 10-5.
Процедура-функция, по которой вычисляется пра¬вая часть уравнения, выглядит:
FUNCTION FUNC (X,Y: REAL) : REAL;
BEGIN
FUNC := X + COS (0.7 * Y);
END;
Результаты работы программы приводятся в табл. 4.2.
Таблица 4.2
Решение дифференциального уравнения у' = х + соs (0.7 - у)
при h = 0.1 при h = 0.05
x = 0.70000 y = 1.100000 x = 0.700000 y = 1.100000
x = 0.750000 y = 1.135017
x = 0.80000 y = 1.169169 x = 0.800000 y = 1.170830
x = 0.850000 y = 1.207420
x = 0.90000 y = 1.241447 x = 0.900000 y = 1.244765
x = 0.950000 y = 1.282844
x = 1.000000 y = 1.316671 x = 1.000000 y = 1.321637
x = 1.050000 y = 1
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа