# Вторая пачка часть 124

13) Достижение заданной точности ? вычисления ин¬те¬гра¬ла может контролироваться проверкой вы¬полнения не¬равенства , при выполнении которого итерационный процесс (3.11) пре¬кращается. Алгоритмы (3.12), (3.13) реализованы в процедуре-фун¬к¬ции INTROMB для начального числа отрезков раз¬би¬е¬¬ния M0= 2. Формальные параметры про¬цедуры. Входные: a, b (тип real) - нижний и верхний пре¬-де¬лы интегрирования; k (тип integer) - ко¬ли¬чес-тво вы¬численных по формуле тра¬¬¬пеций при¬бли-жений ин¬теграла для разбиений M0, ..., Mk; f (тип real func¬tion) - процедура-функция, по ко¬то¬рой вы¬чис¬ля¬ют зна¬че¬ния подынтегральной функ¬ции f(x) в уз¬¬лах раз¬би¬е¬ния a = x0, x1, ..., xMk = b, 0 < M1 < Mk; e (тип re¬al) - задаваемая точность. Выходные: intromb (тип real) - зна¬чение интеграла, вы¬чис¬лен¬ное с точ¬нос¬тью ?? FUNCTION INTROMB (A,B: REAL;K:INTEGER; EXTENAL F : FUNCTION; EPS: REAL) : REAL; VAR D,S,H : REAL; I,J,M,N : INTEGER; T : ARRAY [1..K+1] OF REAL; BEGIN D:=B-A; T[1]:=(F(A)+F(B))/2; N:=1; FOR I:=1 TO K DO BEGIN S:=0; N:=2*N; H:=D/N; FOR J:=1 TO N DO S:=S+F(A+J*H); T[I+1]:=(2*S/N+T[I])/2; M:=1; FOR J:=I DOWNTO 1 DO BEGIN M:=4*M; T[J]:=T[J+1]+(T[J+1]-T[J])/(M-1) END {J}; IF ABS((T[1]-T[2])*D) < EPS THEN EXIT; END { **** I **** }; INTROMB:=T[1]*D END { ***** INT ROMB **** }. Процедура-функция INTROMB была получена пу¬тем пе¬¬¬ревода на язык PASCAL процедуры-функ¬ции, опуб¬ли¬¬кованной в работах Агеева и др. (1966; 1976) и яв¬¬ля¬ю¬ще¬й¬ся, в свою оче¬редь, ре¬зуль¬та¬том оптимизации и ор¬ди¬¬нар-ной пе¬ре¬работки ал¬го¬ритма Ф.Л.Бауэра Х. Тат-чером (1962). Те¬сти¬ро¬ва¬ние про¬из¬во¬дилось на ма¬ши¬не IBM PC/AT-386 для ряда под¬ын-тегральных функций (в том чис¬ле и для тех же f(x) ) и пределов ин¬те¬гри¬¬ро¬вания, что и в ра¬¬-ботах Агеева и др. (1966; 1976), а также Хенниона (1962). При этом для ??= 10-10 бы¬ли по¬лу¬че¬ны сле¬ду¬ю¬щие ре¬¬зультаты: 1) = 1

Индекс
Элементарные функции Линейные уравнения Нелинейные уравнения Случайные числа