Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лр4.docx
Скачиваний:
1
Добавлен:
14.09.2019
Размер:
193.73 Кб
Скачать

Второй результат (/г = 0.01) данного метода удовлетворяет точности решения исходного уравнения по отношению к эталонному результату. Этот метод, как и предполагалось, оказался самым точным.

Один из самых серьезных недостатков методов Рунге - Купа состоит в отсутствии про- стых способов оценки их ошибки.

для i = 1,2,3,...

Итерационный процесс прекращается, когда

для некоторого £ > 0.

Листинг программы и результаты расчета для метода прогноза и коррекции при трех раз- личных величин шагов (для вычисления yi использован метод Рунге - Кутга второго порядка - исправленный метод Эйлера):

{ ЛАБОРАТОРНАЯ РАБОТА № 4. "ЧИСЛЕННЫЕ МЕТОДЫ"

Программа № 5 : METHOD ADAMSA - BOSHFORA }

Program lab_4_5;

Uses Crt;

III. Методы прогноза и коррекции.

Отличительной чертой методов Рунге - Кутта является то, что при вычислении следую- щей точки хП1+1, ут+] используется информация только о точке хт, ут , но не о предыдущих. Кроме того, для методов Рунге - Кутта отсутствуют достаточно простые способы оценки ошибки, что приводит к необходимости рассмотрения некоторых дополнительных методов решения диффе- ренциальных уравнений.

Отличительное свойство этих методов, что с их помощью нельзя начать решение уравне- ния, так как в них необходимо использовать информацию о предыдущих точках решения. Чтобы начать решение уравнения, имея только одну точку, определяемую начальными условиями, или для того, чтобы изменить h , необходим метод типа Рунге - Кутта. Поэтому приходится использо- вать разумное сочетание этих двух методов.

Методы, один из которых будет рассмотрен ниже, известны под общим названием мето- дов прогноза и корректировки. Как ясно из названия вначале «предсказывается» значение ym+i , а затем используется то или иной метод его «корректировки».

5. Метод Адамса - Босфора.

Для прогноза используем формулу второго порядка:

[/» , = у + 2hf(x ,у \

^ Jm+1 -’m-l V m,Jm/

где (0) - означает исходное приближение ym+i , т.е. предсказанное значение. Непосредст- венно из написанной формулы следует, что с ее помощью нельзя вычислить yi , так как для вы- числения yi потребовалась бы точка, расположенная перед начальной точкой уо . Чтобы начать решение с помощью метода прогноза и коррекции, для нахождения yi необходимо использовать метод Рунге - Кутта.

Для коррекции возьмем формулу, похожую на исправленный метод Эйлера:

Const E = 0.0001;

N_max = 5 000;

X_beg = 1 { переменная X - начальное условие };

Y_beg = 1 { переменная Y - начальное условие };

Х_коп =8.5 { требуемое конечное значение аргумента };

h = 0.1; { (h=0.1,0.01,0.005) - величина шага )

Type Ar = array[0..N_max] of real;

Var X,XI,y,y1 : Ar; I : word;

Y_kon,

Y_rez_l, Y_rez_2 : real;

Function F (X, Y :real) : real;

Begin

F:= {2/(X*X*X)) - (3*Y)/X;

End { F } ;

{ }

Function Fii (X, Y, h :real) : real;

Var F_tool : real;

Begin

F_tOOl:=F(X, Y) ;

Fii := F(X+h/2, Y+(h/2)*F_tool);

End { Fii };

{ }

Begin ClrScr;

X 10] := x_beg; Y[0] := Y_beg; i:=0;

While X[i] <= X_kon do Begin

  • [i+1]:=Y[i]+h*Fii(X[i],Y[i],h); { модифицированный метод }

inc(i); { Эйлера }

X[i] := X[i-1]+h

End;

Y_kon:=Y[i];

Repeat { цикл по верхнему индексу }

X [0] :=X_beg; Y[0]:=Y_beg;

Y_rez_l := Y_kon; i:=l;

While X[i] <= X_kon do Begin X[i]:=X[i-1]+h;

  • [i] :=Y [i-1] + (h/2)*(F(X [i-1] , Y[i-1]) + F(X [i] ,Y [i])) ;

inc(i) ;

End;

Y_kon:=Y[i];

Y_rez_2 := Y_kon;

Until abs(Y_rez_2 - Y_rez_l) < E;

Writeln(' ':15,'Step = 1,h:l:3);

Writeln (' ':10,'Y_Result = ',Y_rez_2:3:7);

Repeat

Until KeyPressed End.

Результаты работы прог раммы: Step = 0.1 Y_Rezult = 0.0255086

Step = 0.05

  • Rezult = 0.0260630

Step = 0.005

  • Rezult = 0.0260238

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]