- •§ 3. Интерполяция по Эйткену. § 4. Интерполирование функии кубическими сплайнами § 3. Интерполяция по эйткену
- •Var I,j,n1: integer;
- •§ 4. Интерполяция функции кубическими сплайнами
- •§ 5. Тригонометрическая интерполяция
- •{Подпрограмма вычисления коэффициентов тригонометрического интерполяционного многочлена }
§ 3. Интерполяция по Эйткену. § 4. Интерполирование функии кубическими сплайнами § 3. Интерполяция по эйткену
Для построения интерполяционного полинома Лагранжа по функции y(x), заданной таблично {yi, xi}, весьма эффективной является итерационная схема Эйткена:
,
i = 0, ..., m-1,
где m - количество итераций, символ равно означает оператор присваивания. При этом для любого значения x = xp из интервала [x0, xn] ордината yp = ym.
Рассмотренный алгоритм реализован в процедуре aitken, которую можно использовать как для равных, так и неравных интервалов [xi, xi+1]. Процедура строит полином Лагранжа Ln(x) степени n таким образом, что Ln(xi) º y(xi). Поскольку в процедуре массив y используется для хранения промежуточных значений, его начальное значение не сохраняется.
Формальные параметры процедуры. Входные: x[0:n], y[0:n] (тип real) - массивы абсцисс и ординат таблично заданной функции y = [yi(xi)]; n (тип integer) - количество значений табличной функции (количество узлов интерполяции); xp (тип real) - абсцисса, для которой вычисляется интерполированноe значение функции. Выходные: l (тип real) - интерполированное значение функции y (значение полинома Лагранжа в точке xp).
procedure aitken(x:real;y:mas1;
n:integer;xp:real; var l : real);
Var I,j,n1: integer;
begin
n1:=n-1;
for j:=0 to n1 do
for i:=j+1 to n do
y[i]:=((xp-x[j])*y[i]-(xp-x[i])*y[j])/(x[i]-x[j]); l:=y[n];
end { ****** aitken ******}.
Процедура aitken получена в результате сокращения записи, оптимизации по временным затратам и перевода с языка ALGOL на язык PASCAL oдноименной процедуры, которая опубликована в работе Агеева (1976) и является, в свою очередь, результатом исправления, сокращения и ординарной переработки алгоритма С.Дж. Мифсуда (1966). Процедура проверена для ряда элементарных функций на машине IBM PC/AT-286, некоторые примеры результатов тестирования представлены в табл.2.3. Погрешность интерполирования вычислялась как модуль разности интерполированного значения функции L(x) в точке xn = xp и ее значения, рассчитанного на ЭВМ с точностью = 10-12.
Таблицa 2.3
Функция |
Шаг аргумента |
Значение x |
Ln (x ) |
|
y = exp(x) |
x = const |
0.74 |
2.09593558 |
0 |
y = exp(x) |
x const |
0.74 |
2.09593558 |
0 |
y = exp(x) |
x = const |
0.333 |
1.39514732 |
0 |
y = exp(x) |
x const |
0.333 |
1.39514625 |
1.073e-62 |
y = cos(x) |
x = const |
0.74 |
0.73846864 |
1.192e-72 |
y = cos(x) |
x const |
0.74 |
0.73846852 |
0 |
y = cos(x) |
x = const |
0.333 |
0.94506603 |
5.960e-82 |
y = cos(x) |
x const |
0.333 |
0.94506591 |
5.960e-82 |
