Задать вопрос
4 мая, 06:51

Составить программу, вычисляющую заданный

интеграл по формуле Гаусса. Составить программу-функцию для вычисления значений

подъинтегральной функции. Составить головную программу, содержащую обращение к

вычислительным процедурам и осуществляющую печать результатов. Вычислить абсолютную

и относительную погрешность.

интеграл от 0 до 1 x (1-x) ^2 dx

Программы составлять на Паскале

+4
Ответы (1)
  1. 4 мая, 10:41
    0
    Const

    {константы десятиточечного метода Гаусса}

    g10c1 = 0.9739065285 / 6.2012983932;

    g10c2 = 0.8650633667 / 6.2012983932;

    g10c3 = 0.6794095683 / 6.2012983932;

    g10c4 = 0.4333953941 / 6.2012983932;

    g10c5 = 0.1488743390 / 6.2012983932;

    g10x1 = 0.0666713443 / 6.2012983932;

    g10x2 = 0.1494513492 / 6.2012983932;

    g10x3 = 0.2190863625 / 6.2012983932;

    g10x4 = 0.2692667193 / 6.2012983932;

    g10x5 = 0.2955242247 / 6.2012983932;

    function f (x: real) : real;

    begin

    f : = x * sqr (1 - x)

    end;

    function gsc (a, b: real) : real;

    {получение суммы для метода Гаусса}

    var

    p, q, s, s1, s2, s3, s4, s5: real;

    begin

    p : = (b + a) / 2; q : = (b - a) / 2;

    s1 : = g10c1 * (f (p + q * g10x1) + f (p - q * g10x1)) ;

    s2 : = g10c2 * (f (p + q * g10x2) + f (p - q * g10x2)) ;

    s3 : = g10c3 * (f (p + q * g10x3) + f (p - q * g10x3)) ;

    s4 : = g10c4 * (f (p + q * g10x4) + f (p - q * g10x4)) ;

    s5 : = g10c5 * (f (p + q * g10x5) + f (p - q * g10x5)) ;

    s : = s1 + s2 + s3 + s4 + s5;

    Result : = s * (b - a)

    end;

    function Gauss (a, b, eps, gs: real) : real;

    {рекурсивная ф-ция подсчета с заданной точностью eps}

    {gs - интеграл на (a, b), получать заранее}

    var

    m, ia, ib: real;

    begin

    m : = (a + b) / 2;

    ia : = gsc (a, m) ;

    ib : = gsc (m, b) ;

    if abs (ia + ib - gs) > eps then

    begin

    ia : = gauss (a, m, eps / 2, ia) ; {рекурсия для первой половинки}

    ib : = gauss (m, b, eps / 2, ib) {рекурсия для второй половинки}

    end;

    Result : = ia + ib

    end;

    function Intg (a, b, eps: real) : real;

    begin

    Result : = Gauss (a, b, eps, gsc (a, b)) ;

    end;

    var

    a, b, eps, y1, y2: real;

    begin

    a : = 0;

    b : = 1;

    eps : = 1e-6;

    y1 : = Intg (a, b, eps) ;

    y2:=sqr (b) * (sqr (b) / 4-2*b/3+0.5) ;

    writeln ('Значение интеграла по методу Гаусса: ', y1:0:8) ;

    writeln ('Значение интеграла по формуле: ', y2:0:8) ;

    writeln ('Абсолютная погрешность составляет: ', abs (y2-y1) : 0:8) ;

    writeln ('Относительная погрешность составляет: ', abs ((y2-y1) / y1) * 100:0:6,'%') ;

    end.

    Тестовое решение:

    Значение интеграла по методу Гаусса: 0.08333337

    Значение интеграла по формуле: 0.08333333

    Абсолютная погрешность составляет: 0.00000004

    Относительная погрешность составляет: 0.000044%
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Составить программу, вычисляющую заданный интеграл по формуле Гаусса. Составить программу-функцию для вычисления значений подъинтегральной ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы