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

Составить программу, вычисляющую заданный интеграл по формуле Гаусса. Составить программу-функцию для вычисления значений подъинтегральной функции. Составить головную программу, содержащую обращение к вычислительным процедурам и осуществляющую печать результатов. Вычислить абсолютную и относительную погрешность.  интеграл от 0 до 1  x(1-x)^2 dx Программы составлять на Паскале
Гость
Ответ(ы) на вопрос:
Гость
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%
Не нашли ответ?
Ответить на вопрос
Похожие вопросы