• Помогите пожалуйста кто шарит в Pascal.
    Составить программу приближенного вычисления определенного интеграла, используя формулы численного интегрирования: Формулу левых прямоугольников.

    question img

Ответы 1

  • Пусть l=x_0<x_1<\dots<x_n=b - какое-то разбиение отрезка [a, b]. Формулой левых прямоугольников называется приближение

    \displaystyle \int_a^b f(x)\,dx\approx\sum_{i=0}^{n-1} f(x_i)(x_{i+1}-x_i)

    Часто выбирают равномерное разбиение, в котором все точки расположены на одинаковом расстоянии h = (b - a) / n, при этом x_i=a+ih.

    Реализация (PascalABC.NET): функция int_lr принимает подинтегральную функцию, левую и правую границы отрезка интегрирования и количество отрезков в разбиения. В основной программе интеграл вычисляется для n = 1, 2, 4, 8, ..., 1024, выводится n, результат численного интегрирования и разность между полученным значением и точным значением интеграла. Можно заметить, что при увеличении n в 2 раза ошибка уменьшается примерно в 2 раза.

    function int_lr(f: real-> real; l, r: real; n: integer): real;

    begin

     var h := (r - l) / n;

     var s := 0.To(n - 1).Select(i -> f(l + i * h)).Sum;

     result := s * h;

    end;

    const exact = 1250 / 3;

    begin

     var n := 1;

     for var _ := 1 to 11 do

     begin

       var int := int_lr(x -> (x - 5) ** 2 * (10 - x), 0, 10, n);

       writeln(n:4, int:9:3, abs(int - exact):9:3);

       n := 2 * n;

     end;

    end.

    Вывод программы:

      1 2500.000 2083.333

      2 1250.000  833.333

      4  781.250  364.583

      8  585.938  169.271

     16  498.047   81.380

     32  456.543   39.876

     64  436.401   19.735

    128  426.483    9.816

    256  421.562    4.896

    512  419.111    2.445

    1024  417.888    1.221

    • Автор:

      sampson
    • 5 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years