Показать сообщение отдельно
  #4  
Старый 06.06.2011, 12:46
ART ART вне форума
Продвинутый
 
Регистрация: 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.

Ответить с цитированием