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: double): double;begin f := cos(x * exp(-sqr(x)))end;function gsc(a, b: double): double;{получение суммы для метода Гаусса}var p, q, s, s1, s2, s3, s4, s5: double;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: double): double;{рекурсивная ф-ция подсчета с заданной точностью eps}{gs - интеграл на (a,b), получать заранее}var m, ia, ib: double;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 + ibend;function Intg(a, b, eps: double): double;begin Result := Gauss(a, b, eps, gsc(a, b));end;var a, b, eps, y1, y2: double;begin a := 0; b := 1; eps := 1e-4; y1 := Intg(a, b, eps); y2:=0.9428752387; { найдено при помощи другой программы интегрирования } writeln('Значение интеграла по методу Гаусса: ', y1:0:8); writeln('Значение интеграла по формуле: ', y2:0:8); writeln('Абсолютная погрешность составляет: ', abs(y2-y1):0:8); writeln('Относительная погрешность составляет: ', abs((y2-y1)/y1)*100:0:6,'%');end.Тестовое решение:Значение интеграла по методу Гаусса: 0.94286734Значение интеграла по формуле: 0.94287524Абсолютная погрешность составляет: 0.00000790Относительная погрешность составляет: 0.000838%Замечание: Ввиду неоднозначной трактовки исходной подынтегральной функции сделано второе решение, в котором дается другой ее вариант.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: double): double;begin f := cos(x) * exp(-sqr(x))end;function gsc(a, b: double): double;{получение суммы для метода Гаусса}var p, q, s, s1, s2, s3, s4, s5: double;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: double): double;{рекурсивная ф-ция подсчета с заданной точностью eps}{gs - интеграл на (a,b), получать заранее}var m, ia, ib: double;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 + ibend;function Intg(a, b, eps: double): double;begin Result := Gauss(a, b, eps, gsc(a, b));end;var a, b, eps, y1, y2: double;begin a := 0; b := 1; eps := 1e-4; y1 := Intg(a, b, eps); y2:=0.6561743624; { найдено при помощи другой программы интегрирования } writeln('Значение интеграла по методу Гаусса: ', y1:0:8); writeln('Значение интеграла по формуле: ', y2:0:8); writeln('Абсолютная погрешность составляет: ', abs(y2-y1):0:8); writeln('Относительная погрешность составляет: ', abs((y2-y1)/y1)*100:0:6,'%');end.Тестовое решение:Значение интеграла по методу Гаусса: 0.65618325Значение интеграла по формуле: 0.65617436Абсолютная погрешность составляет: 0.00000888Относительная погрешность составляет: 0.001354%