
06.06.2011, 12:46
|
Продвинутый
|
|
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
|
|
Вот тебе код. Потом сам свою функцию подставишь и пределы расставишь.
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
const
N = 10;
type
TValues = array [1..N] of real;
function f(x, y: Real): real;
begin
Result := (Sqr(x) + y + 2)/(x * 2 * y);
end;
var
h: real;
a, b: real;
i: integer;
x, y: TValues;
begin
a := 2;
b := 3;
h := (b - a) / N;
x[1] := a;
y[1] := 2;
//Сначала по Эйлеру
for i := 2 to 3 do begin
x[i] := x[i - 1] + h;
y[i] := y[i - 1] + h * f(x[i - 1], y[i - 1]);
end;
//Потом по Адамсу
for i := 4 to N do begin
x[i] := x[i - 1] + h;
y[i] := y[i - 1] + h * ((3/2) * f(x[i - 1], y[i - 1]) - 0.5 * f(x[i - 2], y[i - 2]));
end;
for i := 1 to N do
Writeln('x[', i, '] = ', x[i]:0:5, '; y[', i, '] = ', y[i]:0:5);
readln;
end.
|