Программа


Program Integral;
{ Вычисление интеграла по
  4-м вариантам разбиения,
  сравнение с точным
  значением, запись
  результатов в файл,
  вывод графика
  подынтегральной ф-ии }
Uses
  Graph,Crt;
Const
  a=0;               { Левая граница интервала интегрирования }
  b=3;               { Правая граница интервала интегрирования }
  ScaleX=180;        { Масштабный коэффициент по оси X }
  ScaleY=100;        { Масштабный коэффициент по оси Y }
  DifferenceX0=-270; { Смещение оси X относительно центра экрана }
  DifferenceY0=60;   { Смещение оси Y относительно центра экрана }
  DriverPath='';     { Путь к графическому драйверу }
Var
  i,k:integer;       { i - счетчик-параметр при вычислении суммы
                       k - счетчик }
  h,Exact,Sum:real;  { h - шаг разбиения
                       Exact - значение интеграла, вычисленное аналитически
                       Sum - переменная для набора интегральной суммы }
  S:text;            { Файловая переменная }
  GraphDriver,GraphMode:integer; { Графический драйвер и режим }
Function F(x:real):real; { Вычисление подынтегральной функции }
  Begin
    F:=(Sqr(x)-x)/(x+1)
  End;
Function F0(x:real):real; { Вычисление первообразной }
  Begin
    F0:=0.5*Sqr(x)-2*x+2*Ln(abs(x+1))
  End;
BEGIN

{ Вычисление интеграла и запись результатов в файл }

  Assign(S,'result.pas');
  { Связывание файловой переменной с файлом result.pas }
  Exact:=F0(b)-F0(a);     { Вычисление интеграла по первообразной }
  Rewrite(S);             { Открытие файла }
  writeln(S,'        =',Exact);  { Запись значения интеграла в файл }
  for k:=1 to 4 do  { Вычисление интеграла по приближенной формуле
                      по четырем вариантам разбиения }
    Begin
      Sum:=0; { Обнуление суммы }
      h:=(b-a)/(k*50); { Вычисление шага разбиения}
      for i:=0 to k*50-1 do Sum:=Sum+F(a+i*h)+F(a+i*h+h); { Набор суммы }
      writeln(S,'n=',k*50:3,'   ў',h*Sum/2,
              '   погрешность ',abs(Exact-h*Sum/2));
      { Вычисление интеграла и вывод результата в файл }
    End;
  Close(S);  { Закрытие файла }


{ Построение графика функции }

  GraphDriver:=Detect; { Автоматическое определение драйвера }
  InitGraph(GraphDriver,GraphMode,DriverPath);
  { Инициализация графического режима }
  SetColor(White); { Установка белого цвета }
  SetLineStyle(SolidLn,0,NormWidth);
  { Установка сплошной линии нормальной толщины }
  Line(Round(GetMaxX/2)+DifferenceX0,0,Round(GetMaxX/2)+DifferenceX0,GetMaxY);
  { Ось X }
  Line(0,Round(GetMaxY/2)+DifferenceY0,GetMaxX,Round(GetMaxY/2)+DifferenceY0);
  { Ось Y }
  SetLineStyle(SolidLn,0,ThickWidth);{ Установка сплошной толстой линии}
  MoveTo(a*ScaleX+Round(GetMaxX/2)+DifferenceX0,
         Round(GetMaxY/2)+DifferenceY0-Round(F(a)*ScaleY));
  { Помещение указателя в первую точку графика }
  for i:=a*ScaleX to b*ScaleX do  { Построение графика }
  LineTo(i+Round(GetMaxX/2)+DifferenceX0,
         Round(GetMaxY/2)+DifferenceY0-Round(F(i/ScaleX)*ScaleY));
  while not KeyPressed do; { Задержка до нажатия клавиши }
  CloseGraph { Закрытие графического режима }
END.


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