§ 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на языкPASCALoдноименной процедуры, которая опубликована в работе Агеева (1976) и является, в своюочередь, результатом исправления, сокращенияи ординарной переработки алгоритма С.Дж. Мифсуда (1966). Процедура проверена для ряда элементарных функций на машине IBM PC/AT-286, некоторые примеры результатов тестированияпредставлены в табл.2.3. Погрешность интерполированиявычислялась как модуль разности интерполированного значения функцииL(x) в точкеxn = xp и еезначения, рассчитанного на ЭВМ с точностьюe= 10-12.
Таблицa 2.3
Функция |
Шаг аргумента |
Значение x |
Ln (x ) |
D |
y = exp(x) |
Dx = const |
0.74 |
2.09593558 |
0 |
y = exp(x) |
Dx № const |
0.74 |
2.09593558 |
0 |
y = exp(x) |
Dx = const |
0.333 |
1.39514732 |
0 |
y = exp(x) |
Dx № const |
0.333 |
1.39514625 |
1.073e-62 |
y = cos(x) |
Dx = const |
0.74 |
0.73846864 |
1.192e-72 |
y = cos(x) |
Dx № const |
0.74 |
0.73846852 |
0 |
y = cos(x) |
Dx = const |
0.333 |
0.94506603 |
5.960e-82 |
y = cos(x) |
Dx № const |
0.333 |
0.94506591 |
5.960e-82 |