Вторая пачка часть 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
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа