Вычисление определенного интеграла с заданной точностью( метод Симпсона) - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Проверьте пожалуйста программу на ошибки. 1/xlg(x) a=2 b=3

Решение задачи: «Вычисление определенного интеграла с заданной точностью( метод Симпсона)»

textual
Листинг программы
{
 Программа для вычисления интеграла
 численным методом Симпсона
 с заданной погрешностью вычислений
}
program Sympson;
 
  function F(x: real): real;
  begin
    F := 1 / (x * (ln(x) / ln(10)));
  end;
 
  function Integr(a, b: real; n: integer): real;
  var
    Res: real;
    h: real; {величина шага}
    x: real;
    i: integer;
  begin
    h := (b - a) / n;
    Res := F(a) + F(b);
    i := 1;
    while i < n do
    begin
      x := a + i * h;
      Res := Res + 4 * F(x);
      Inc(i);
      x := a + i * h;
      Res := Res + 2 * F(x);
      Inc(i);
    end;
    Res := Res * h / 3;
    Integr := Res;
  end;
 
var
  a, b,      {границы интегрирования}
  Eps: real; {погрешность численного интегрирования}
 
  n: integer;{количество подинтервалов интегрирования}
  Icur,      {значение интеграла на текущем шаге итерации}
  Ipre: real;{значение интеграла на предыдущем шаге итерации}
 
begin
  a := 2;
  b := 3;
  Eps := 0.00001;
 
  n := 2;
  Icur := Integr(a, b, n);
  repeat
    Ipre := Icur;
    n := 2 * n;                {увеличиваем количество подинтервалов}
    Icur := Integr(a, b, n);
    WriteLn('I=', Icur: 10: 8, ' при n=', n, ', e=', Abs(Icur - Ipre): 10: 8);
  until Abs(Icur - Ipre) < Eps;
  WriteLn('I=', Icur: 10: 8, ' при n=', n, ', e=', Abs(Icur - Ipre): 10: 8);
end.

Объяснение кода листинга программы

  1. В функции F(x) вычисляется определенный интеграл с использованием численного метода Симпсона.
  2. В функции Integr(a, b; n) вычисляется определенный интеграл с заданной погрешностью вычислений.
  3. Переменная h используется для определения величины шага.
  4. Переменные x и i используются для итеративного вычисления интеграла.
  5. Переменная Res используется для хранения промежуточных результатов вычислений.
  6. Переменная Eps используется для задания погрешности численного интегрирования.
  7. Переменная n используется для задания количества подинтервалов интегрирования.
  8. Переменные Icur и Ipre используются для хранения значений интеграла на текущем и предыдущем шагах итерации соответственно.
  9. В цикле while повторяются вычисления на текущем и предыдущем шагах итерации, пока разница между ними не будет меньше заданной погрешности.
  10. После достижения заданной точности, значение интеграла записывается в переменную Integr.
  11. В конце программы выводятся результаты вычислений.

Оцени полезность:

7   голосов , оценка 3.571 из 5
Похожие ответы