Глава 2. ИНТЕРПОЛИРОВАНИЕ И ЭКСТРАПОЛИРОВАНИЕ ФУНКЦИЙ
Предположим, что задано некоторое упорядоченное множество вещественных абcцисс х1, х2, ..., хn и связанное с ним множество вещественных ординат у1, у2, ..., уn. Пусть х1< х2< ...< хn и каждое уi есть некоторое вещественное число, отвечающее хi, которое определяется математически или в результате каких-либо наблюдений (рис. 2.1). Точки (xi,yi) называются узлами интерполяции. Кривая, которая точно проходит через эти узлы, называется интерполяционной кривой.
Исходя из изложенного можно сформулировать (не строго) следующие определения. Задача одномерной интерполяции заключается в построении такой непрерывной функции f, при которой f(хi) º уi для всех хi, т.е. функция f обязательно должна проходить абсолютно точно через заданные узлы интерполяции. Однако при этом f(xk) должна принимать "разумные" значения для всех xk, лежащих между заданными точками хi. Кроме того, на интерполирующую функцию накладывается еще ряд очевидных ограничений: не иметь особых точек на интервале интерполирования; быть достаточно гладкой; иметь необходимое количество производных и пр. Если функция определена и непрерывна на [y1, y2], ее интерполяционные узлы расположены на [х1, х2], а точка x Ï [х1, х2] или f(x) Ï [y1, y2], то тогда говорят о задаче экстраполирования функции.
Таким образом, задачи интерполирования и экстраполирования возникают в следующих случаях:
-
если решаются прогнозные задачи (экстраполирование);
-
практически всегда при решении экономических задач (интерполирование и экстраполирование);
-
при обработке данных, полученных в экспериментах (интерполирование);
-
всегда при решении задач на ЭВМ (интерполирование и экстраполирование);
-
при задании функции графиком или таблицей (интерполирование и экстраполирование);
-
во всех остальных не описанных здесь случаях, если это необходимо.
§ 1. ПОСТРОЕНИЕ ИНТЕРПОЛЯЦИОННОГО ПОЛИНОМА ЛАГРАНЖА ПО ЗАДАННЫМ ЗНАЧЕНИЯМ ФУНКЦИИ
Пусть теперь функция f(x) известна лишь в х1, х2, ..., хn узлах некоторой сетки. Попытаемся построить такую другую функцию j(х; a), которая полностью совпадала бы с заданной f(x) в этих узлах, т.е. j(х; a) = j(х, а1, а2, ..., ат) º ºf(xк). Тогда из последнего равенства можно будет определить компоненты a. При k £ т, а в частном случае k = т, компоненты a определяются из решения системы
, (*)
которая в указанных случаях имеет единственное решение, если ее главный определитель отличен от нуля:
.
Система функций, удовлетворяющая условию (*), является Чебышевской [Бахвалов, 1973а].
Одним из самых важных классов среди интерполирующих функций является множество алгебраических полиномов вида
,
где аi - некоторые неизвестные коэффициенты. Для того чтобы их определить однозначно, необходимо иметь n+1 точек для построения системы из n линейных уравнений относительно аi:
, (j = 0, 1, ..., N+1).
При этом потребуем, чтобы построенный полином в заданных узлах хi О {Х} в точности совпадал со значениями f(хi) в указанных точках. Если среди множества хi нет совпадающих, тогда система линейных уравнений, полученная относительно аi,
определена, имеет решение и это решение единственное. Заметим, что главный определитель системы - это определитель Вандермонда:
,
который при выполнении названных условий всегда отличен от 0. Значит система имеет решение и это решение будет единственное. Очевидно, что решением системы будет полином n-й степени, который называют полиномом Лагранжа и записывают
. (2.1)
Важно отметить, что существует один и только один полином степени меньше n, который интерполирует заданные n + 1 точки. При использовании всего известного набора точек интерполирующий полином называют глобальным интерполирующим полиномом. Однако по теореме Фабера при специальном расположении узлов интерполяции n всегда можно найти такой полином Рn, непрерывный на заданном отрезке [х0, хn], который не сходится к f, несмотря на то, что Рn(хi) º уi . Поэтому на практике редко пользуются глобальным интерполирующим полиномом, заменяя его полиномом степени не выше 5. Тогда говорят о скользящей интерполяции.
Процедура-функция L выполняет интерполирование по заданным значениям х и у. Следует отметить, что ee эффективно использовать, если количество точек не превышает 10, в противном случае необходимо применять интерполяцию сплайнами (для уменьшения погрешности интерполирования).
Формальные параметры процедуры. Входные: b (тип real) - точка на оси Ох, для которой ищутся значение функции; n (тип integer) - количество точек, по которым строится интерполирующий полином. Степень полинома должна быть на единицу меньше n; x, y (тип real) - массивы, в которых находятся заданные значения точек. Выходные: L (тип real) - значение функции в точке b.
function L ( b : real; n : integer;
x, y : mas ) : real;
var sum, pr : real; i, j : integer;
(* функция возвращает значение "у" в заданной
точке "В", если известны массивы "Х" И "Y" *)
begin
sum := 0.0;
for j:=1 to n do
вegin
pr := 1.0;
for i := 1 to n do
if i<>j тhen
pr:=pr*(b-x[i])/ (x[j]-x[i]);
sum := sum + y[j] * pr;
end;
L := sum;
end.
При большом количестве точек n могут оказаться решающими ошибки, связанные с округлением при вычислении высших степеней х, что приведет к расхождению решения. Кроме того, ошибки округления накапливаются на каждом очередном шаге, поэтому оценка ошибки интерполирования должна обязательно вычисляться в каждом конкретном случае на каждом расчетном шаге.
Один из возможных способов оценки ошибки при интерполировании заключается в следующем. Во-первых, предполагают, что заданные числа уi являются в действительности значениями некоторой функции f(хi). Во-вторых, что f(хi) имеет n +1 непрерывную производную для всех хi. В-третьих, что Pn - единственный полином степени < n, интерполирующий заданные точки {(хi , уi)}. Тогда можно доказать, что для любого действительного хi выполняется
,
где x - некоторая неизвестная точка на интервале, определяемом точками х0, х1, ..., хn и хn+1. Когда известны границы для f(х), эта разность дает оценку ошибки.
Приводимые результаты были получены на персональном компьютере IBM386 DX2 фирмы “R-Style”. Для подтверждения корректности процедуры L были использованы два набора значений Х и Y для неравноотстоящих (вариант А) и равноотстоящих (вариант Б) узлов. Результаты вычислений и исходные данные приведены в табл. 2.1.
Таблица 2.1
|
№ |
Вариант А |
Вариант Б |
|||
Параметр |
i |
Х |
Y |
X |
Y |
|
|
1 |
0.11 |
9.0 |
0.1 |
2.0 |
|
Исходные |
2 |
0.15 |
6.6 |
0.2 |
4.0 |
|
данные |
3 |
0.21 |
4.7 |
0.3 |
5.0 |
|
|
4 |
0.29 |
3.4 |
0.4 |
5.2 |
|
|
5 |
0.35 |
2.7 |
0.5 |
3.8 |
|
|
6 |
0.40 |
2.4 |
0.6 |
1.5 |
|
Заданная точка |
|
0.263 |
? |
0.253 |
? |