Программа


Program Trapezium;
{ Вычисление интеграла 
  методом трапеций }
Type Func=function(x:real):real; { Тип функция }
Var Left,Right:real;       { Левая и правая границы интервала интегрирования }
    Break:integer;         { Разбиение }
{$F+}    { Использовать дальний тип обращений }
Function F(x:real):real;   { Вычисление интегрируемой функции }
  Begin
    F:=1/((1+Sqr(x))*(1-0.25*Cos(Sqr(x))))
  End;
{$F-}    { Использовать ближний тип обращений }
Function Integral(Left,Right:real;Break:integer;F:Func):real;
                                              { Функция вычисления интеграла }
  Var Sum,                                    { Промежуточная сумма }
      LengthStep,                             { Длина шага разбиения }
      LeftY,RightX,             { Левая и правая границы шага интегрирования }
      RightY:real;
      { Значение интегрируемой функции на правой границе шага интегрирования }
      i:integer;      { Счетчик }
  Begin
  Sum:=0;                             { Обнуление промежуточной суммы }
  LengthStep:=(Right-Left)/Break;     { Вычисление длины шага интегрирования }
  LeftY:=F(Left);             { Вычисление значения функции на левой границе }
  RightX:=Left+LengthStep;    { Вычисление правой границы левого интервала }
  for i:=1 to Break do        { Цикл набора промежуточной суммы }
    begin
      RightY:=F(RightX);     { Вычисление значения функции на правой границе }
      Sum:=Sum+(LeftY+RightY)/2;       { Набор промежуточной суммы }
      LeftY:=RightY;                   { Сохранение значения функции на правой
                                         границе для последующей итерации }
      RightX:=RightX+LengthStep
                              { Вычисление правой границы следующего участка }
    end;
  Integral:=Sum*LengthStep    { Определение интегральной суммы }
  End;

BEGIN
  { Ввод данных }
  Write('Введите левую границу интервала интегрирования ');
  ReadLn(Left);
  Write('Введите правую границу интервала интегрирования ');
  ReadLn(Right);
  Write('Введите разбиение интервала интегрирования ');
  ReadLn(Break);

  WriteLn('=',Integral(Left,Right,Break,F)) { Вычисление и вывод результата }
END.

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию