Программа


{ По заданной точности вычислить
  интеграл, используя различные
  разбиения, метод прямоугольников }
Const
  StepOfBreak=50;                                      { Шаг ряда разбиений }
Var
  a:real;                           { Левая грница интервала интегрирования }
  b:real;                          { Правая грница интервала интегрирования }
  Eps:real;                                  { Критерий точности вычисления }
  Sum,SumPred:real;  { Текущая интегральная и предыдущая интегральная суммы }
  Step:real;                                                { Шаг разбиения }
  Fcurrent,Fpred:real;
                    { Текущее и предыдущее значения подынтегральной функции }
  i,k:integer;                                                   { Счетчики }
Function F(x:real):real;      { Вычисление значения подынтегральной функции }
  Begin
    F:=x                                         { Определение функции F(x) }
  End;
BEGIN
  write('Задайте критерий точности вычисления ');
                                   { Приглашение ввести точность вычисления }
  readln(Eps);                              { Получение точности вычисления }
  write('Задайте левую  границу интервала интегрирования ');
                { Приглашение ввести левую границу интервала интегрирования }
  readln(a);                                     { Получение левой границиы }
  write('Задайте правую границу интервала интегрирования ');
               { Приглашение ввести правую границу интервала интегрирования }
  readln(b);                                     { Получение правой границы }
  writeln;
  writeln('РАЗБИЕНИЕ       ЗНАЧЕНИЕ ');
  i:=0;                         { Определение начального положения счетчика }
  repeat                   { Цикл вычисления интеграла и вывода результатов }
    i:=i+1;
    SumPred:=Sum;               { Сохранение предыдущего значения интеграла }
    Sum:=0;                                  { Обнуление интегральной суммы }
    Step:=(b-a)/StepOfBreak/i;                 { Определение шага разбиения }
    for k:=1 to StepOfBreak*i do Sum:=Sum+F(a+(k-0.5)*Step);
                        { Набор интегральной суммы без учета шага разбиения }
    Sum:=Step*Sum;     { Пересчет интегральной суммы, учитывающий разбиение }
    writeln(StepOfBreak*i:6,'     ',Sum);                { Вывод результата }
  until (abs(Sum-SumPred)<=Eps)and(i>1);
                                      { Выход из цикла по критерию точности }
  writeln('-----------------------------')    { Оформление конца вычислений }
END.


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