Вторая пачка часть 126
Например, при использовании ин-тер¬по¬ляционной схемы Ла¬гран¬жа, при¬спо¬соб¬лен¬ной для осредненных квадратных трех¬членов (akx2 + bkx + ck), где
, , ,
,
производная может быть вычислена при m = 3, k = 1, 2 для функции, определенной в точках 1, 2, 3, 4 пу¬тем усред¬нения коэффициентов пара¬бол, про¬ве¬ден¬ных че¬рез точки 1, 2, 3 и 2, 3, 4:
y'(x2) = 2ax + b, a = (a1+ a2)/2 ,
b = (b1+ b2)/2, c = (c1+ c2)/2 .
Интерполирующий многочлен, построенный по двум па¬раболам, в этом случае будет вы¬чис-лять¬ся по фор¬муле F2(x) = (ax2+ bx + c). Ин¬тег¬ри¬ро¬ва¬ние про¬из¬во¬дится путем осреднения ин¬те¬гра¬лов от парабол меж¬ду границами не¬за¬висимых ко¬о¬рдинат, т.е. для каждого ин¬тер¬вала вдоль аб¬с¬ц謬с¬сы, поскольку полученные ре¬зуль¬таты на¬кап¬ли¬ва¬ют¬ся для вычисления опре¬де¬лен¬но¬го интеграла.
Рассмотренный алгоритм реализован в про¬це¬ду¬ре DI¬FINT, которая в зависимости от способа об¬ра¬ще¬ния к ней вы¬¬полняет интерполяцию, диф¬фе¬рен¬цирование или ин¬те¬гр謬рование функции од-ной пе¬ременной.
Формальные параметры про¬цедуры. Входные: x[1:n], y[1:n] (тип real) - массивы таб¬лич¬ных значений ар¬гу¬¬мен¬та и функции, причем зна¬чения xi расположены в во第рас¬тающем порядке и xi xj для i j; jt (тип integer) - пବраметр, за¬да¬ю¬щ¬ий операцию: при jt = 1 вы¬пол¬ня¬ется ин¬¬тер¬по¬ли¬ро¬вание, при jt = 2 и jt = 3 со¬от¬вет¬ствен¬но диф¬¬ф嬬рен¬ци¬рование и интегрирование; xk (тип real)- точ¬ка, для ко-торой строится по¬ли¬ном или вычисляется приз¬вод¬ная, при xk ??[x1,xn-1] осуществляется опе¬ра¬ция эк-стрବпо¬ли¬ро¬ва¬ния, при jt = 3 значение xk не¬су¬щест¬вен¬но; x1, x2 (тип real) - нижний и верх¬ний пределы ин¬те¬гр謬ро¬вания, в случае jt = =1, 2 зна¬че¬ния x1, x2 не¬су¬щест¬вен¬¬ны. Выходные: res (тип re¬al) - зна¬че-ние результата.
PROCEDURE DIFINT (X,Y:MAS1;N,JT:INTEGER;
XK,X1,X2:REAL; VAR RES : REAL);
VAR CA,CB,CC,A,B,C,S1,S2,T1,T2,T3,SUM : REAL;
J,JS,J1,J2,I : INTEGER;
LABEL ST,INT,TERM,NO5,NO6,NO9,INTRP,DIFF,
NO17, LAGR;
BEGIN
ST:
IF JT=3 THEN GOTO INT;
IF XK > X[N-1] THEN
BEGIN
J:=N-1;
JS:=1;
GOTO TERM
END;
IF XK < X[2] THEN
BEGIN
J:=2;
JS:=1;
GOTO TERM
END;
{***** ОПРЕДЕЛЕНИЕ МЕСТА АРГУМЕНТА В ТАБЛИЦЕ *****};
JS:=2;
FOR I:=2 TO N DO
BEGIN
IF XK < X[I] THEN GOTO TERM;
J:=I;
END;
NO5:
CA:=A;
CB:=B;
CC:=C;
JS:=33;
J:=J+1;
GOTO TERM;
NO6:
A:=(CA+A)/2;
B:=(CB+B)/2;
C:=(CC+C)/2;
NO9:
IF JT=2 THEN GOTO DIFF;
INTRP:
RES:=XK*(A*XK+B)+C;
RETURN;
DIFF:
RES:=2*A*XK+B;
RETURN;
INT: SUM:=0;
S1:=X1;
J1:=2;
J2:=N;
FOR I:=1 TO N DO
BEGIN
IF X1 < X[I] THEN GOTO NO17;
§ 6
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа