Uploaded by d-bodounov

Часть 1 se

advertisement
Глава 1. Интерполяционные многочлены
1.1.
Интерполяционный многочлен Лагранжа
Ж.Л.Лагранж (1736 – 1813) – выдающийся французский математик. Член ряда академий, в т.ч. Парижской, Петербургской, Берлинской. Изучал математику самостоятельно. С 19 лет
– профессор туринской артиллерийской школы, затем профессор
парижских военных училищ (Нормальной и Политехнической
школ). Ему принадлежат крупнейшие результаты во многих
областях математики и механики, сохранившие значение по сей
день.
Задача интерполяции, или интерполирования – одна из основных задач вычислительной математики. Термин происходит от
латинских слов inter polus – «между выделенными точками».
Приемы интерполирования можно трактовать как «искусство
чтения между строк» таблицы.
Пусть некоторая функция f x задана табличным способом:
 
 
fi  f x i ,
i  0, 1,
, n.
Значения хi называются «узлами» таблицы. Они могут быть
неравноотстоящими.
Поставим задачу: составить многочлен Pn x степени не вы-
 
ше n, такой чтобы в узлах его значение было бы в точности равно
значению табличной функции, то есть
Pn x i  fi .
 
Смысл задачи в том, чтобы подобрать удобное с вычислительной точки зрения аналитическое выражение для функции, заданной таблично. Такая задача и называется задачей интерполяции
функций.
Если такой полином существует, он является единственным.
В самом деле, пусть существуют два таких полинома:
Pn x и Qn x . Тогда уравнение Pn x  Qn x  0 степени не
 
 
 
 
выше n имеет n  1 корень: x 0 , x 1,
, x n , что по основной теоре-
 
 
ме алгебры невозможно. Следовательно, Pn x  Qn x .
Замечание. Единственность интерполирующего полинома понимается в следующем смысле. Полиномы Pn  x  и Q n  x  , оба
удовлетворяющие условиям задачи интерполяции, внешне могут
сильно различаться (то есть их математические выражения могут
быть совершенно не похожи друг на друга). Сравните, например,
ниже формулы (1) и (8). Но они во всех точках принимают одно и
то же значение. Иначе говоря, их графики тождественны.
Доказательство существования такого полинома проведем
конструктивно, то есть укажем способ его построения.
Составим для всех узлов так называемые «коэффициенты Лагранжа»:
x  x0
x  x i 1 x  x i 1
x  xn
Li x 
.
xi  x 0
x i  x i 1 x i  x i 1
xi  xn



 
 


i  0, 1,
 
 


, n.
Принцип его конструкции очевиден – в числителе i-го коэффициента пропущен двучлен x  x i с i-м узлом, а в знаменателе


помещено произведение таких же двучленов, но вместо переменной х подставлено значение пропущенного узла хi. Иначе говоря,
знаменатель равен значению числителя в точке хi.
Такая конструкция обеспечивает следующие свойства коэффициентов Лагранжа:
Очевидно, это полином степени n относительно переменной х;
В «своем», i-м узле он равен единице, так как числитель равен
знаменателю:
Li x i  1.
 


В «чужом», j-м узле i  j он равен нулю, так как в числителе всегда найдется двучлен x j  x j  0 :
 
Li x j  0.
Тогда искомый интерполирующий многочлен степени не выше n может быть построен как линейная комбинация коэффициентов Лагранжа:

n

Pn x   fi Li x
i 0
(1)
Ясно, что его степень равна n (как сумма полиномов такой же
степени) или ниже (так как старшие степени слагаемых могут
взаимно уничтожиться).
С учетом 2-го и 3-го свойств ясно, что график этого полинома
проходит в точности через узловые значения табличной функции:
Pn x i  fi .
 
Полином (1) называется интерполяционным полиномом (многочленом) Лагранжа.
Положив в (1) все f i = 1, получаем, что
 L x   1.
n
i 0
(2)
i
То есть сумма всех коэффициентов Лагранжа равна единице.
Это позволяет взглянуть на коэффициенты Лагранжа, как на некоторые весовые коэффициенты, а на интерполированное значение функции (1) – как на средневзвешенное значение, в котором
каждый узел таблицы участвует со своим весовым коэффициентом.
Пример 1.
Построить полином Лагранжа для функции, заданной таблицей
0
1
i
xi
1
5
fi
3
7
Для двух узлов строим два коэффициента Лагранжа:
x  x0
x 5
x 5
x 1 x 1
и L1 



.
x 0  x1 1  5
4
x1  x 0 5  1
4
Теперь по формуле (1) составляем полином Лагранжа:
x 5
x 1
P1(x )  3 
7
 x  2.
4
4
Если по формуле из аналитической геометрии построить прямую, проходящую через две заданные точки, получим:
x 1 y  3

, откуда следует y  x  2.
5 1 7  3
Итак, при двух узлах полином Лагранжа имеет первую степень
и является уравнением прямой линии, проходящей через заданные точки. Если бы было задано f2  3 , легко убедиться, что в
этом случае полином Лагранжа имел бы нулевую степень:
P1 x  3, т.е. представлял бы прямую, параллельную оси абсL0 
x  x1

 
цисс.
Интерполяция по двум точкам называется линейной интерполяцией и часто применяется при работе с таблицами, когда не
требуется высокая точность или когда таблицы составлены с
очень мелким шагом. Подробности см. в разделе 1.5.
Пример 2.
Построить полином Лагранжа для функции, заданной таблицей с тремя узлами:
0
1
2
i
xi
1
3
4
fi
0
2
9
Обратим внимание, что заданы неравноотстоящие узлы.
Для трех узлов строим три коэффициента Лагранжа:
L0 
x  x x  x   x  3x  4   x
x  x x  x  1  31  4 
1
0
1
2
0
2
2
 7x  12
;
6
x  x x  x   x  1x  4    x  5x  4 ;
2
x  x x  x   3  1 3  4 
x  x x  x   x  1x  3  x  4x  3 .

3
x  x x  x   4  1 4  3
2
L1 
0
1
0
2
1
2
2
L2
0
2
0
1
2
1
Теперь по формуле (1) составляем полином Лагранжа:
x 2  7x  12
x 2  5x  4
P2 x  0 
2

6
2
x 2  4x  3 12x 2  42x  30
 9 


3
6
 2x 2  7x  5.
 
Таким образом, при трех узлах полином Лагранжа оказывается
параболой, проходящей через заданные точки:
P2 x  2x 2  7x  5.
 
Интерполяция по трем точкам называется квадратичной.
Аналогично, при 4-х узлах полином окажется кубической параболой и так далее.
Интерполяция по четырем точкам называется кубической. Нелинейные методы интерполяции применяются, если требуется
повышенная точность или если таблицы составлены с широким
шагом.
1.2. Барицентрическая формула
Формула (1) имеет ясный конструктивный смысл, но вычисления по ней чрезмерно трудоемки за счет многократного повторного вычисления почти одинаковых выражений в коэффициентах
Лагранжа. Их можно существенно упростить.
Введем обозначения
wn x  x  x 0 x  x 1
x  xn ;
(3)
  

 

 
Si x 

x
i
 x0
x
 x1
i
 x
1
i

 x i 1 x i  x
x
i
 x i 1
 x
i
 xn

.
(4)
Обратим внимание, что в выражение (3) входят все двучлены
без пропуска, а в знаменатель второго выражения вместо ранее
пропущенного двучлена входит сомножитель (x i  x ). Поэтому
все последующие выражения терпят разрыв в узлах.
В этих обозначениях коэффициенты Лагранжа принимают вид
Li x  wn x S i x ,
(5)
 
   
а поскольку их сумма равна единице (см. формулу (2)), то
   S x .
n
1  wn x
i 0
(6)
i
С учетом формул (1) и (5) получаем

   f S x .
Pn x  wn x
n
i
i 0
i
(7)
Поделив (7) на (6), получим т.н. барицентрическую формулу,
которая вдвое менее трудоемка, чем классический полином Лагранжа:
 f S x 
n
 
Pn x 
i 0
n
i
i
 S x 
i 0
.
(8)
i
Экономия достигается за счет того, что здесь, по существу,
вычисляются только знаменатели коэффициентов Лагранжа; точнее говоря, обратные им величины. Название этой формулы связана с тем, что она в точности совпадает с формулой для вычисления координаты центра тяжести.
Повторим, что этой формулой нельзя пользоваться в узловых
точках, но значения функции в узлах и без того известны.
1.3. Схема Эйткена интерполирования по Лагранжу
Очень экономичным и удобно программируемым способом
интерполирования по Лагранжу является вычислительная схема
(процедура) Эйткена.
Формулу линейной интерполяции запишем в виде определителя
x  xi
fi
1
(9)
fi ,i 1 x 
.
x i 1  x i x  x i 1 fi 1
 
Раскрыв определитель, легко убедиться в эквивалентности выражения (9) полиному Лагранжа первого порядка, построенному
по узлам i и i  1 . В частности, очевидно, что в узлах
fi ,i 1 x i  fi , fi ,i 1 x i 1  fi 1 .
 
Аналогично fi 1,i 2
 
x   f
i 1
i 1
 
, fi 1,i 2 x i 2  fi 2 .
Квадратичная интерполяция по трем узлам i, i+1, i+2 достигается рекуррентно:

fi ,i 1,i 2 x 
.
x 
x  xi
1
x i 2  x i x  x i 2
fi ,i 1 x
fi 1,i 2
(10)
Эквивалентность этого выражения полиному Лагранжа обосновывается следующими соображениями:
*
легко убедиться, что выражение является квадратичным
полиномом;
*
его график проходит через узловые точки. В самом деле,
с учетом предыдущих равенств получаем
 
fi ,i 1,i 2 x i 
 
xi  xi
1
x i 2  x i x i  x i 2
fi ,i 1,i 2 x i 1 
fi
 
fi 1,i 2 x i
x i 1  x i
1
x i 2  x i x i 1  x i 2
fi 1
fi 1
 fi ,
 fi 1,
 
fi ,i 1,i 2 x i 2 
x i 2  x i
1
x i 2  x i x i 2  x i 2
 
fi ,i 1 x i 2
 fi  2 .
fi 2
Но тогда, в силу единственности интерполирующего полинома, гарантируется эквивалентность выражения (10) квадратичному полиному Лагранжа.
По индукции получаем для полинома порядка не выше n:

fi ,i 1,i 2,...,i n x 
x  xi
1
x i n  x i x  x i  n
 .
x 
fi ,i 1,...,i n 1 x
fi 1,i 2,...,i n
(11)
Процесс интерполирования по Эйткену удобно оформлять в
виде таблицы 1.1:
xi
x  xi
fi
fi , i  1
x i 1
x  x i 1
fi 1
fi 1,i 2
x i 2
x  x i 2
fi 2
fi 2,i 3
x i 3
x  x i 3
fi  3
...
...
...
...
fi ,i 1,i 2
fi ,i 1,i 2,i 3
fi 1,i 2,i 3 ...
...
И т.д. по общей
формуле (11)
Кубическая интерполяция по общей формуле (11)
Квадратичная интерполяция по формуле
(10)
Линейная
интерполяция по формуле (9)
Узлы
Разности
Значения функции
Таблица 1.1
...
Вычислим по этой схеме f 2  в условиях примера №2.
Узлы
Разности
1
2- 1 = 1
ЗначеКва
Линейная
интерполяция
ния функинтерп
по формуле (9)
ции
по фор
0
1 ґ 2 - 0 ґ (- 1)
3- 1
2  3  1
3
2
(- 1)ґ
9 - (- 2)ґ 2
4- 3
2  4  2
4
9
1ґ
= 1
= - 5
–
Вычислим значение f 2  по полученной в результате реше-
 
ния примера 2 формуле P2 x  2x 2  7x  5.

P2 2  2  22  7  2  5  1.
Наблюдается полное совпадение результатов. Это подтверждает эквивалентность схемы Эйткена и классического полинома
Лагранжа.
Схема Эйткена особо экономична при интерполяции высоких
порядков. Ее четкий алгоритм позволяет легко запрограммировать вычисления. Процедура интерполяции по Эйткену на языке
MathCAD [3] занимает всего несколько строк.
–
–
Aitken ( t  x  f) 
for i  0  n
x i  t  xi
P 0  i  fi
for j  1  n
for i  0  n  j
Pj  i 
x i  P j 1  i 1  x i  j  P j 1  i
xi  j  xi
Pn  0
Параметры этой процедуры:
x – вектор, содержащий узлы табличной функции;
f – вектор, содержащий узловые значения табличной функции;
t – значение переменной, для которого вычисляется интерполированное значение табличной функции.
В этой процедуре запрограммированы вычисления по общей
формуле (11).
Обратим внимание еще на один момент. Если после проделанной интерполяции возникает потребность добавить к таблице
функции еще один узел, общая формула (1) требует проделать все
вычисления заново (так как каждый коэффициент Лагранжа зависит от всех узлов). Схема же Эйткена в этих условиях требует
добавить только по одной строчке в каждом столбце. Все результаты в таблице, связанные с прежними узлами, остаются неизменными.
1.4. Погрешность интерполяции
Как мы видели, для узлов значения функции и ее интерполирующего полинома совпадают, то есть погрешность интерполяции в узлах равна нулю. Но как обстоит дело с погрешностью
между узлами?
Назовем остаточным членом разность
 
 
 
R n x  f x  Pn x .
(12)
Иначе говоря,
f x  Pn x  R n x .
 
 
 
(13)
 
Если относительно поведения функции f x
ничего не из-
вестно, кроме ее значения в узлах интерполяции, то никаких полезных суждений об остаточном члене R n x высказать невоз-
 
можно. Поэтому сделаем естественное допущение, предположив,
что функция между узлами является «достаточно гладкой». Это
означает, что функция и ее первые n  1 производные являются
непрерывными на некотором отрезке. Кратко это условие записывается так: f x  C n 1 a, b  , где отрезок a, b  содержит все
 
узлы интерполяции и точку x . Буква C в этом символе происходит от слова continuum , то есть непрерывность, а символ C n 1
означает класс функций, непрерывных вместе со своими производными до n  1 -го порядка на заданном отрезке a;b  .
Искать остаточный член будем в виде произведения
R n x  w n x  rn x .
(14)
 
   
Выражение для w  x  введено выше (3). Такая форма выбрана потому, что в узлах w  x   0, и это обеспечивает равенство
n
n
i
 
x  может
в узлах нулю остаточного члена R n x i  0. Заметим, что по этой
причине второй сомножитель rn
принимать в узлах
произвольные значения. Найдем выражение для rn  x  .
Зафиксируем произвольное значение переменной x , не совпадающее ни с одним узлом
x  a, b  , x  x i , i  0, 1, , n .
Введем вспомогательную функцию от t  a, b  :


  

j t  Pn t  w n t rn x  f t .
(15)
Обратим внимание, что член rn  x  здесь зависит от зафиксированного значения x , но не от переменной t .
Во всех узлах t  x i функция (15) равна нулю:
j
x   f
i
i
 
 fi  0  rn x  0.
Кроме того, в точке t  x с учетом (13) и (14) она также равна
нулю:
  
     w x  r x   0.
Таким образом, по крайней мере, в n  2  -х точках отрезка

j x  Pn x  Pn x  wn x rn x
n
n
a, b  функция (15) обращается в нуль. По теореме Ролля ее про-


изводная по t обращается в нуль по крайней мере в n  1 точ-
 
ках интервала a , b , вторая производная – в n точках и т.д. Сле-
 
довательно, найдется хотя бы одна точка x  a, b , в которой
j
n 1
x   0.
Поскольку n  1 -я производная многочлена n  1 -го поn 1
рядка wn
x  n  1 !, а n  1 -я производная многочлена
 
n 1
n -го порядка Pn

x   0, из (15) получаем
f
n 1
x   n  1 !r x  ,
n
 
откуда следует rn x 
x  .
 n  1 !
f
n 1
 
 
Поэтому остаточный член R n x  w n x
ла (13) принимает вид
 
 
 
f x  Pn x  w n x
x  ,
 n  1 !
f
n 1
x  ,
 n  1 !
f
и форму-
n 1
(16)
   
где x  x x  a, b – некоторая неизвестная точка интервала
интерполирования.
Хотя точное местонахождение точки x неизвестно, но формула (16) позволяет оценить погрешность интерполяции или экстраполяции.
Если известно максимальное (по модулю) значение производn 1
ной на интервале M n 1  max f
x   , то из (16) следует

a ,b 
оценка сверху погрешности в точке
M n 1
f x  Pn x 
wn x .
n 1 !
 
 

 

(17)
Оценка максимальной погрешности на всем отрезке тогда получит вид
M n 1
(18)
max f x  Pn x 
max wn x .
a ,b 
n  1 ! a ,b
 
Пример.

Оценить
 


погрешность
 
приближения
функции
f x  x в точке x  116 и на отрезке [100; 144] с помощью
полинома Лагранжа второй степени, построенного в узлах
x 0  100; x 1  121; x 2  144.
Решение.
1
1
3
f  x  x 1/ 2 ; f  x   x 3/ 2 ; f  x  x 5/ 2 .
2
4
8
3
3
M 3  max f  x  1005/ 2  105.
8
8
[100,144]
 
 
 
 
Тогда из неравенства (17) получаем оценку в точке
3
1
x  P2 116  105
116  100 116  121 116  144 
8
3!
105

 16  5  28  1, 4  103.
16
По формуле (18) максимальная погрешность интерполяции на
всем отрезке не превосходит
105
max x  P2 (x ) 
max x  100 x  121 x  144 .
100,144 
16 100,144
 








Максимум модуля w n  x  лежит в точке x min  134, 4 и имеет
значение 4425.
105
 4425  2.8  103.
При этом max x  P2 (x ) 
100,144 
16
(Конец примера).
Интуитивно может казаться, что чем выше степень интерполирующего полинома, тем меньше погрешность, так как при этом
используется больше информации о поведении функции и, кроме
того, в знаменателе оценки погрешности находится быстро растущий член (n  1) !. Но из формул (17) и (18) и из рассмотренных примеров следует, что это не совсем так. На погрешность
сильно влияет максимальное значение производной n  1 -го
порядка. У многих функций эти производные растут быстрее, чем
факториал. К счастью, у важных функций sin x , cos x ; exp x 
производные не возрастают с ростом их порядка.
На погрешность также влияет ширина интервала a;b  . Если
широкий диапазон сочетается с высоким порядком полинома,
произведение w n  x  может быть очень велико. Особенно оно
возрастает, если аргумент x находится вблизи от концов интервала и примерно посредине двух ближайших к нему узлов. Естественно, погрешность при этом сильно увеличивается. По той же
причине понятно, что применение полиномов Лагранжа для экстраполяции (когда точка x лежит за пределами всех узлов) также
ведет к резкому возрастанию погрешности (за счет увеличения
произведения w n  x  ).
Карл Рунге (1856 – 1927) в 1901 году обнаружил, что аппрок1
симация функции f x 
полиномом Лагранжа высоко1  25x 2
го порядка при равноотстоящих узлах обеспечивает отличную
сходимость при 0.5  x  0.5 , но имеет огромную погрешность

Рис.1.1. Эффект Рунге
при x  0, 75.
Это наглядно видно на рис. 1.1, на котором график функции
совмещен с графиком интерполирующего ее полинома Лагранжа
25-го порядка. График функции выглядит как плавная колоколообразная кривая, в то время как график полинома Лагранжа сильно осциллирует вблизи концов интервала [-1;1], далеко отклоняясь между узлами от значений функции.
По этой причине редко применяются полиномы Лагранжа выше пятого порядка при равноотстоящих узлах.
Если таблица имеет больше шести узлов, для интерполяции
берут три узла ниже x и три узла выше x . Такой метод называют
скользящим полиномом Лагранжа 5-го порядка.
Если вся таблица, имеющая много строк («узлов»), заранее
разбита на группы по 6 строк и для каждой такой группы составлен полином Лагранжа 5-го порядка, говорят о составном полиноме Лагранжа 5-го порядка, или о кусочно-полиномиальной
аппроксимации (приближении) функции. Естественно, соседние
группы строк таблицы должны иметь общий пограничный узел.
Метод скользящего полинома точнее, чем метод составного
полинома, так как в первом случае точка интерполяции всегда
находится вблизи от середины интервала интерполяции. Кроме
того, в случае составного полинома графики частных полиномов
стыкуются между собой в пограничных узлах не гладко, а с изломом. Говоря более строго, производные составных полиномов в
пограничных узлах терпят разрыв. Это не соответствует характеру интерполируемой функции f x  C n 1 a, b  и делает полу-


ченные выше оценки погрешностей слишком оптимистичными
вблизи от пограничных узлов.
Конечно, все рассуждения, проведенные выше для наглядности на примере полиномов 5-го порядка, остаются справедливыми для полиномов любого, n -го порядка.
Современным методом борьбы с отмеченными недостатками
полиномов Лагранжа является сплайн-интерполяция, о которой
пойдет речь в соответствующем разделе.
Сгущая узлы в зоне сильной осцилляции полинома и разреживая их в зоне высокой точности, можно добиться более равно-
мерного распределения погрешности по интервалу. Этот вопрос
более подробно рассмотрен в разделе «Полиномы Чебышева и
оптимальный выбор узлов интерполяции».
1.5. Линейная интерполяция
В подробных таблицах часто применяется линейная интерполяция по двум соседним узлам. Речь, по существу, идет о составном полиноме Лагранжа первого порядка. В качестве x 0 принимают узел, ближайший к x снизу (снизу – в смысле меньше), а в
качестве x 1 – ближайший сверху (сверху – в смысле больше, а не
по положению в столбце таблицы). Полином первого порядка
x  x1
x  x0
P1(x ) 
f0 
f , как правило, представляют в более
x 0  x1
x1  x 0 1
удобной для практики форме. Величину h  x 1  x 0
шагом интерполяции. Величину t 
называют
x  x0
называют фазой инh
терполяции. Очевидно, 0  t  1. Вычислим дополнение фазы до
единицы
x  x0
x  x0  x  x0
x x
x  x1
1t  1
 1
 1

.
x1  x 0
x1  x 0
x1  x 0 x 0  x1
В этих обозначениях рабочая формула для линейной интерполяции принимает вид:
P1 x  1  t f0  tf1  f 0  t f1  f 0 .
(19)
  



В первом варианте легко узнать формулу деления отрезка
(хорды графика функции) в данном отношении (из аналитической
геометрии). Последний вариант наиболее удобен для практических вычислений; он позволяет заранее рассчитать так называемые «пропорциональные части» (partes proportionales), вспомогательные таблицы PP которых часто помещают в дополнение к
основным таблицам, чтобы облегчить интерполирование.
Оценим погрешность линейной интерполяции.


max w1 x  max x  x 0
x 0 ,x 1 
x 0 ,x 1 
x  x   max x  x
2
1
x 0 ,x 1 
0

 x 1 x  x 0x 1 .
Чтобы найти максимум квадратного трехчлена, приравняем
нулю его производную.
Из 2x  x 0  x 1 получаем, что точка максимума многочлена
 
w1 x
x 
находится ровно посредине отрезка интерполирования
x 0  x1
2
. Поэтому x  x 0 
x 0  x1
2
 x0 
x1  x 0
2

h
. Анало2
h
гично x  x 1   .
2
 
h2
. При этом оценка сверху мак[x 0 ,x 1 ]
4
симальной погрешности линейной интерполяции на отрезке получает вид
M
max f x  P1 x  2 h 2 .
x 0 ,x 1 
8
Пример.
Оценить погрешность линейной интерполяции в таблице синусов, построенной с шагом в 1.
Решение.
p
.
В радианной мере шаг h 
180

Так как M 2  max sin x  1, то погрешность линейной ин-
В результате max w1 x 
 
 


p2
 0, 4  104.
2
180  8
Если таблицы четырехзначные, то значения функции округлены до четвертого знака после запятой; погрешность округления
при этом не превышает половины последнего знака, то есть
0.5  104 . Округление результата интерполяции до четвертого
знака добавит такую же погрешность. В результате суммарная
погрешность определения синуса по таким таблицам с помощью
терполяции не превышает величины
линейной интерполяции не превысит 1.4  104 , то есть полутора
единиц последнего знака.
1.6. Полиномы Ньютона-Грегори
Ньютон Исаак (1643-1727) – великий английский физик, математик и астроном, создатель математического анализа и
теоретической механики; Грегори Джеймс (1638-1675) – современник Ньютона.
1.6.1. БИНОМ НЬЮТОНА
Сначала рассмотрим так называемые соединения элементов
некоторых множеств в подмножества.
Чаще всего рассматриваются соединения трех типов: размещения, перестановки и сочетания. Пусть имеется множество, состоящее из n элементов. Будем формировать из этих элементов
подмножества, содержащие по k элементов каждое.
Размещением называется подмножество, отличающееся от
каждого из прочих таких подмножеств либо составом элементов,
либо порядком их следования.
Сочетанием называется подмножество, отличающееся от
каждого из прочих таких подмножеств только составом элементов. Порядок следования элементов внутри сочетания либо неразличим, либо не имеет значения с точки зрения решаемой задачи.
Примечание. Подмножества считаются различными по составу, если они отличаются хотя бы одним элементом.
Пример. Если в турнире участвуют 10 команд, то каждый возможный вариант занятия первых трех мест составляет одно размещение из 10 команд по 3. Но каждая тройка призеров из 10
команд (без различия мест внутри тройки) есть сочетание из 10
команд по три.
Для подсчета числа размещений имеем очевидную формулу
A  n n 1
n  k  1 , включающую k сомножителей. В
k
n

 

самом деле, имеется n вариантов замещения 1-го места, n  1
вариант замещения 2-го места и так далее, до k -го места.
Например, A103  10  9  8  720 вариантов занятия первых трех
мест из 10.
Перестановкой из n элементов называется размещение, которое отличается от других размещений только порядком следования элементов. Состав всех перестановок одинаков.
Пример. Любое распределение всех участников турнира по 10
местам представляет собой перестановку из 10 элементов.
Число Pn всевозможных перестановок n элементов может
быть вычислено по этой же формуле Pn  Ann  n !.
Например, число вариантов распределения 10 команд по 10
местам есть P10  10!  3 628 800.
Другой пример. Число вариантов занятия мест внутри конкретной тройки призеров есть P3  3 !  6.
Если перебрать всевозможные сочетания из n элементов по k,
число которых обозначим как C nk , и в каждом из них выполнить
всевозможные перестановки, получим все размещения, то есть
Ank  C nk  Pk . Отсюда получаем формулу для вычисления числа
сочетаний
C nk 
Ank
Pk



n n 1 n 2
 n  k  1 
k!

n!

k! n k !
. (20)
Например, число возможных троек призеров из 10 команд (без
различия мест внутри тройки) равно
C 103 
10 !
8  9  10

 120 .
3 !7 !
23
Это в 6 раз меньше, чем число вариантов занятия первых трех
мест среди тех же 10 команд. С другой стороны, полезно заметить, что если мы возьмем эти 120 вариантов троек призеров и в
каждом из них переберем все варианты распределения призеров
по местам (а таких вариантов 3!  6 ), получим как раз 720 вариантов занятия первых трех мест.
Теперь вспомним формулу бинома Ньютона, которая будет
активно использоваться в данной главе. Биномом Ньютона назы-

вается разложение двучлена a  b
Если
a  b 
n
в
произведении


 a b a b

n
одинаковых
n
 a  b 
по степеням слагаемых.
сомножителей
рассмотреть члены, в которых
от k двучленов участвует второе слагаемое (b), а от остальных
n  k  двучленов участвует первое слагаемое (a), то такие члены
будут равны a n kbk . Всего таких одинаковых членов будет столько, сколько имеется способов выбрать двучлены указанного типа,
то есть C nk . Приводя подобные, получаем, что общий (k-й) член
разложения имеет вид C nk a n kbk , а формула разложения бинома
Ньютона по степеням в целом получает выражение
a  b 
n

n
C
k 0
k
n
a n kbk .
(21)
В частности,
a  b 
2

 a 2  2ab  b2 , а a  b
Так же легко получить

3
 a 3  3a 2b  3ab2  b 3 .
4  3 2 2 4  3 2 3 4  3 2 1 4
ab 
ab 
b 
12
12  3
12  3  4
 a 4  4a 3b  6a 2b2  4ab3  b4
и так далее.
Нетрудно выявить некоторые важные свойства биномиальных
коэффициентов:
 Из (20) следует, что C nk  C nn k , поэтому равноудаленные от
концов коэффициенты равны, что и видно на примерах, приведенных выше.
a  b 
4
 a 4  4a 3b 
 Положив в (21) a  b  1, сразу получаем, что
n
C
k 0

a  b    1 C a
n
n
k
k 0
k
n
k
n
 2n .
n k k
b.
 C nk  C nk 11  C nk 1.
Последнее свойство не столь очевидно, но его не сложно доказать. В самом деле, по формуле (20)
C nk 11  C nk 1 
n  1 !  n  1 ! .
k  1 ! n  k  ! k ! n  k  1 !
Приводя к общему знаменателю, получаем, что
C nk 11  C nk 1 

  
k ! n  k  !
k n  1 ! n  1 ! n  k
  n  1 !n  C
k ! n  k  !
k
n
.
На последнем свойстве основан эффективный способ рекуррентного вычисления биномиальных коэффициентов с помощью
так называемого «треугольника Паскаля»:
Таблица 1.2
Его
коэффициенты
Бином
a  b 
0
1
a  b 
a  b 
a  b 
a  b 
a  b 
1
1 1
2
1 2 1
3
…
4
5
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
…
В треугольной таблице 1.2 все числа, кроме крайних единиц,
равны сумме двух соседних вышележащих:
C nk  C nk 11  C nk 1 .
При машинных вычислениях применяется именно такой очень
быстрый алгоритм, не использующий операцию умножения.
1.6.2. Полиномы по нисходящим разностям
Важным частным случаем интерполяции является интерполяция таблиц, заданных с постоянным шагом. Учет этой особенности позволяет получить значительно более удобные формулы,
нежели исходная форма полиномов Лагранжа.
Итак, пусть h  x i 1  x i  const – постоянный шаг интерполяции, а t 
x  xi
– фаза интерполяции. Фаза интерполяции –
h
это, по существу, нормированное расстояние от точки x до ближайшего слева узла, измеренное в шагах. Тогда значение любого
узла можно вычислить по его номеру:
x i  x 0  ih .
Введем также конечные разности значений функции –
1-го порядка:
D f0  f1  f0 ; D f1  f2  f1; D f2  f3  f2 ;
; D fn 1  fn  fn 1.
2-го порядка:
D 2 f0  D f1  D f0 ; D 2 f1  D f2  D f1;
; D 2 fn 2  D fn 1  D fn 2 .
…..
n-го порядка:
D n f0  D n 1 f1  D n 1 f0 ;
D n f1  D n 1 f2  D n 1 f1;
.
Заметим, что эти разности – дискретный аналог (приближенное значение) дифференциалов функции соответствующих порядков в ее узлах. Эти разности удобно вычислять в табличной
форме.
 
Покажем это на примере функции f x  x 3 (Табл. 1.3):
Таблица 1.3
x
f
Df
D2f
0
0
1
1
1
2
D3f
D4f
6
6
0
7
12
6
0
8
19
18
6
3
27
37
24
4
64
61
5
125
Заметим, кстати, что если функция – многочлен n-й степени,
то ее n-е разности постоянны, а (n+1)-е равны нулю (как и все
следующие, естественно). Это – следствие аналогичных свойств
производных многочлена. Отсюда следует такой практический
прием: если в таблице конечных разностей некоторой функции
окажется, что, например, пятые разности почти постоянны, а шестые почти равны нулю, значит, функцию можно хорошо аппроксимировать полиномом пятого порядка.
Любую конечную разность легко выразить через значения
функции в узлах. В самом деле:

 

D 2 f0  f2  f1  f1  f0  f2  2 f1  f0 .
Аналогично,

 

D 3 f0  f3  2 f2  f1  f2  2 f1  f0  f3  3 f2  3 f1  f0 .
Нетрудно заметить, что коэффициенты в этих разложениях являются биномиальными коэффициентами (20), то есть конечную
разность n-го порядка можно получить по формуле бинома Ньютона (21), в которой вместо степеней будут участвовать нижние
индексы.


Dn f  f  1
 fn  nfn 1 
n


f
n n 1
12
n 2



n n 1 n 2
12  3
f
n 3

 f0 .
(22)
С другой стороны, можно выразить все узловые значения
функции через ее начальное значение f 0 и через конечные разности всех порядков. Получим
f1  f0  D f0 ;
Из D 2 f0  f2  2 f1  f0 получим


f2  2 f1  f0  D 2 f0  2 f0  D f0  f0  D 2 f0 .
В результате имеем f2  f0  2D f0  D 2 f0 .
Вообще по индукции получаем операторный бином Ньютона:

fk  1  D

k
(23)
f0 .
Это означает, что выражение 1  D  мы раскрываем по формуле бинома Ньютона (21), а затем каждое слагаемое формально
(как оператор) умножаем на f 0 . Получим этим способом, например, значение функции в 5-м узле:
k

f5  1  D

5
f0 


54 2 54 3
  1  5D 
D 
D  5D 4  D 5  f0 
12
12


54 2
54 3
D f0 
D f0  5D 4 f0  D 5 f0 
12
12
 f0  5D f0  10D 2 f0  10D 3 f0  5D 4 f0  D 5 f0 .
 f0  5D f0 
Преобразуем полином Лагранжа 1-го порядка с помощью конечных разностей. Используя формулу (19), получаем
 


P1 x  f0  t f1  f0  f0  t D f0 .
Аналогично преобразуем полином Лагранжа 2-го порядка.
x  x x  x  f 
x  x x  x 
x  x x  x  f  x  x x  x  f .

x  x x  x  x  x x  x 
 
P2 x 
1
2
0
0
1
0
0
2
2
0
1
1
1
0
1
2
2
2
0
2
1
Учтем, что x 1  x 0  x 2  x 1  h,
x 2  x 0  2h,
а
что
также,


x  x 1  x  x 0  h  th  h  t  1 h,


x  x 2  x  x 0  2h  th  2h  t  2 h .
x  x 0  th,

P2 t 
Получим
t  1t  2 f
0

t t 2

f
1


t t 1
2
2
1
2
Выразим здесь все функции через конечные разности и f 0 :
t  1t  2 f  t t  2 ( f

2
1
t t  1

( f  2D f  D f ).
P2 t 
0
0
f.
 D f0 ) 
2
2
0
0
0
Приводя подобные члены, получим коэффициенты:
t 2  3t  2  2t 2  4t  t 2  t
 1;

при f 0 равный
2

при D f0 равный t 2  2t  t 2  t  t ;


t t 1
при D 2 f 0 равный
2
.
Окончательно получаем

P2 t  f0  t D f0 

t t 1
D f .
2
0
2
Обобщая по индукции, получим формулу для полинома n-го
порядка:
t t  1
D f

2!
t t  1 t  n  1

D f.
Pn t  f0  t D f0 
2
0



t t 1 t 2
3!
D f
3
0


n
n!
0
(24)
(Здесь в каждом числителе столько сомножителей, сколько в
знаменателе, или каков порядок конечной разности).
Эту формулу легко запомнить как операторный бином Ньютона вида
 
Pn t  1  D

t
(25)
f0 .
В силу единственности интерполирующего многочлена формулы Лагранжа, Эйткена, Ньютона и т.п. дают один и тот же результат. Однако большое практическое удобство этой формулы
по сравнению с исходной формулой Лагранжа состоит в том, что
увеличение степени полинома не требует пересчета всех коэффициентов; добавляется лишь новый член в конце.
Этой формулой можно пользоваться в начале и в середине
таблицы, пока имеется необходимое количество конечных разностей. Поэтому она называется формулой Ньютона-Грегори для
интерполирования вперед (или по нисходящим разностям). Ее
называют также первой формулой Ньютона для равноотстоящих
узлов.
Пример. Вычислить f  0.24  , используя квадратичную интерполяцию функции
0,2
0,3
0,4
x
f
2,3
2,6
2,1
t 
Решение. h  0, 1;
0.24  0.20
 0.4.
0.1
Составим таблицу конечных разностей:
x
f
Df
D2f
0,2
2,3
0,3
– 0,8
0,3
2,6
– 0,5
0,4
2,1
По формуле Ньютона-Грегори получаем


P2 0, 24  2.3  0.4  0.3 

0.4  0.4  1
 2.3  0.12  0.096  2.516.
2

 0.8  
1.6.3. Полиномы по восходящим разностям
Если бы мы захотели вычислить P2  0.34  , пользуясь той же
таблицей, нам не хватило бы разностей. Это типичная ситуация
для конца таблицы, особенно, если используется многочлен достаточно высокого порядка. Для решения такой коллизии можно
пересоставить полином, выразив его через значение функции fn в
конце таблицы и через восходящие разности.
Выше была получена формула
t 1 t 2
t t 2
t t 1
P2 t 
f0 
f1 
f2 .
2
1
2
Теперь мы преобразуем ее иначе, чем в прошлый раз, а именно, выразим f 0 и f1 через f2 . Так как D 2 f0  f2  2 f1  f0 , то







f0  D 2 f0  f2  2 f1  D 2 f0  f2  2( f2  D f1 ).

Окончательно полу-
чаем f0  f2  2D f1  D 2 f0 . Заменим также f1  f2  D f1 . В результате получим

P2 t 

t  1t  2 ( f
2
t t 1

2
f.
2
 2D f1  D 2 f0 ) 

t t 2
1

f
2

 D f1 
2
Вспомним также, что t 
x  x0
. Но в конце таблицы следует
h
опираться не на предшествующий, а на последний узел, то есть
фазу интерполяции удобнее вычислять по формуле
s
x  x2
h
.
Это означает, что s 
x  x2
x  x 0  2h
 t  2. Поэтому
h
h
t  s  2, а t  1  s  1. Сделав соответствующие замены, получим

P2 s 

s  1 s ( f

 2D f1  D 2 f0 ) 
s  2 s
2
2
s 2 s 1


1
f.
f
2

 D f1 
2
2
Приводя подобные члены, получим, что

коэффициент при f 2 равен
s 2  s  2s 2  4s  s 2  3s  2
 1,
2

коэффициент при D f1 равен s 2  s  s 2  2s  s,

а коэффициент при D 2 f 0 равен
s  1 s .
2
В результате получаем, наконец, что

P2 s  f2  s D f1 

s s 1
D f .
2
0
2
Обобщая эту формулу по индукции, получим

Pn s 
 fn  s D fn 1 

s s 1
2!
D f
2
n 2



s s 1
 s  n  1  D
n!
n
f0 .
(26)
Эта формула называется формулой Ньютона-Грегори для интерполирования назад, или по восходящим разностям. Она
называется также второй формулой Ньютона для равноотстоящих
узлов. Иногда отсчет строк в таблице ведут снизу, обозначая по-
следнюю строку как нулевую; тогда предшествующие строки
получают отрицательные номера, и формула приобретает вид

Pn s  f0  s D f 1 

s s 1
D f
2
2



s s 1
 s  n  1 D
2!
n!
Решим приведенный выше пример, выполнив интерполирование назад.
x  x2
0.24  0.4
 1.6; получаем, далее,
h
0.1
1.6 0.6
P2 1.6  2.1  0.5  1.6  0.8 

2
 2.1  0.8  0.384  2.516,
Вычисляем s 








то есть в точности тот же результат.
1.6.4. Интерполяционные полиномы Стирлинга и Бесселя
Оказывается, точность интерполяции можно несколько повысить, не увеличивая степень интерполирующего полинома. С
этой целью таблица конечных разностей (табл. 1.4) строится как
диагональная, а не треугольная:
Таблица 1.4
x0
f0
D f0
x1
D 2 f0
f1
D 3 f0
D f1
x2
f2
D 2 f1
D f2
n
f n .
x3
f3
Затем пустые места заполняются среднеарифметическими значениями соседних чисел, расположенных сверху и снизу. Получаем таблицу 1.5.
Таблица 1.5
Стирлинг
Бессель
Стирлинг
Бессель
Стирлинг
Бессель
Стирлинг
x0
f0
x 0,5
f0,5
D f0
x1
f1
D f0,5
D 2 f0
x 1,5
f1,5
D f1
D 2 f0,5
x2
f2
D f1,5
D 2 f1
x 2,5
f2,5
D f2
x3
f3
D 3 f0
Формулы, содержащие целые шаги, называются формулами
Стирлинга; формулы, содержащие половины шага, называются
формулами Бесселя. Следует использовать ту из них, к которой
ближе значение x .
1.7. Интерполяция с помощью сплайнов
1.7.1. Интерполяционный полином Эрмита
Иногда требуется, чтобы в узлах интерполяции обеспечивалось не только равенство полинома и интерполируемой функции,
но чтобы производные полинома совпадали с производными
функции до некоторого порядка. Можно доказать существование
и единственность такого полинома, который конструируется подобно полиному Лагранжа, но в общем случае имеет, естественно, весьма громоздкий вид. Такие полиномы называют полиномами с кратными узлами, а число значений, заданных в узле,
называют кратностью узла.
Укажем важный частный случай. Если имеется только два
узла (левый и правый) и требуется, чтобы в узлах совпадали значения полинома и функции, а также значения первых производных полинома и функции, соответствующий полином должен
иметь, как минимум, третий порядок. В самом деле, кубическая
парабола y  ax 3  bx 2  cx  d имеет четыре параметра, которые
могут быть определены по четырем названным условиям.
Такой полином был сконструирован Ш.Эрмитом (1822 –
1901). Кубический интерполяционный полином Эрмита имеет
следующий вид:
 
H 3 x  fi


( x i 1  x ) 2 2 x  x i  h
3
 fi  1
h
2 x i 1  x  h
x  x   
2
i
  f  x

3
i 1
i
  f 
i 1
x
 x  x  
h
x  xi
2
i
2
 x  x  .
2
i 1
2
h
h
(27)
Кратность его узлов равна двум (заданы значения функции и
ее первой производной). Индекс i относится к левому узлу, а
индекс i  1 – к правому. Прямой подстановкой узловых значений переменной x легко убедиться, что этот полином удовлетворяет предъявленным требованиям, то есть
H i x i   fi ; H i x i 1   fi 1; H i x i   fi ; H i x i 1   fi 1.
Погрешность полиномов с кратными узлами оценивается выражением, подобным погрешности полинома Лагранжа, с той
разницей, что сомножители произведения w(x ) имеют степени,
равные кратности соответствующего узла. В частности, для кубического полинома Эрмита имеет место равенство

w 4 (x )  x  x i
 x  x  ,
2
2
i 1


максимум которого достигается в точке x i  x i 1 / 2 и равен
h 4 / 16. С учетом этого факта приходим к следующей оценке
погрешности кубического полинома Эрмита на интервале:
max f (x )  H 3 (x ) 
x 0 ,x 1 
M4
384
h4 .
(28)
Это означает, что приближение функции кубическим полиномом Эрмита имеет четвертый порядок точности (с уменьшением
шага вдвое погрешность уменьшается в 16 раз).
Другим важным частным случаем является случай единственного (нулевого) узла, в котором заданы значение функции и
ее n производных. Естественно, в этом случае речь идет не об
интерполяции, а только об экстраполяции. Как легко понять, полином кратности n  1 , решающий эту задачу, представляет собой на самом деле отрезок ряда Тейлора:
Pn (x ) 
n
f

k  x  x 0
0

k
k!
Этот факт выявляет глубокую связь формулы Тейлора с проблемой аппроксимации функций. Погрешность такой аппроксимации оценивается известным выражением для остаточного члена формулы Тейлора в форме Лагранжа.
При наличии нескольких узлов применение формулы (27) приводит к составному полиному Эрмита. Важным отличием от кубической интерполяции по Лагранжу является тот факт, что кубический полином Лагранжа проходит через четыре узла, а кубический полином Эрмита – через каждые два соседних узла. То
есть, на каждом элементарном интервале между соседними узлаk 0
ми строится свой полином Эрмита. Если значения производных
во внутренних узлах задать одинаковыми слева и справа, составной полином Эрмита будет стыковаться в узлах без изломов графика.
Эта идея может быть развита дальше. Если обеспечить равенство слева и справа от узлов не только первых, но и вторых производных, кривизна графика составного полинома не будет меняться скачком при переходе через узел. Эта идея лежит в основе
современного метода интерполяции с помощью сплайнов
(сплайн-интерполяции).
1.7.2. Сплайны
Как уже отмечалось, кусочно-полиномиальная интерполяция с
помощью полиномов Лагранжа или Ньютона-Грегори имеет тот
недостаток, что на стыках интервалов имеет место излом графика
полинома, то есть разрыв первой производной. Пренебречь этим
можно далеко не всегда.
Современный метод сплайн-интерполяции, ориентированный
на применение ЭВМ, впервые появившийся в 1946 году, а с 60-х
годов получивший широкое распространение, лишен этого недостатка.
Термин «сплайн» (от англ. Spline –гибкая стальная линейка,
стержень) обозначает чертежное лекало переменной кривизны.
В вычислительной математике сплайном называется математическая модель такого лекала, то есть функция, непрерывная
вместе с несколькими производными на всем отрезке a;b  , которая на каждом частичном отрезке между узлами x i ; x i 1  явля

ется алгебраическим многочленом некоторого порядка. Максимальный по всем частичным отрезкам порядок полинома называется порядком (степенью) сплайна, а разность между степенью
сплайна и порядком наивысшей непрерывной на a;b  производной называется дефектом сплайна.
Из курса сопромата известно, что уравнение статического
 
равновесия балки таково: S 4 (x )  0. Но четвертые производные
равны нулю у полиномов третьего порядка. Следовательно, через
каждые два соседние узла должен быть проведен график кубического полинома. А чтобы у графика, как и у реального лекала, не
было изломов и скачков кривизны, необходимо обеспечить равенство в узлах производных слева и справа. Непрерывность
производных первого порядка обеспечивает отсутствие изломов
графика, а непрерывность вторых производных обеспечивает
отсутствие скачкообразного изменения кривизны графика. Этого
достаточно, чтобы обеспечить приемлемую глобальную гладкость интерполирующей кривой и хорошую точность интерполяции. Поэтому на практике наибольшее распространение получили
кубические сплайны, дефект которых равен единице.
ЗАМЕЧАНИЕ. При большом числе узлов требование непрерывности третьей производной для кубического сплайна невыполнимо. Для кубической параболы третья производная имеет постоянное значение, поэтому такое требование означало бы, что на всех
частичных отрезках между узлами использовался бы один и тот
же сплайн. Но это возможно только при максимальном числе
узлов, равном четырем. Такой сплайн совпадал бы с кубическим
полиномом Лагранжа.
Поэтому, если необходимо обеспечить непрерывность более,
чем двух производных, требуется применять сплайн более высокой степени. Такая необходимость возникает редко.
На i -м интервале ( от x i 1 до x i ) парабола 3-го порядка задается формулой
S i (x )  ai (x  x i 1 )3  bi (x  x i 1 )2  ci (x  x i 1 )  di .
Поскольку всего интервалов n , имеем 4n неизвестных
( ai , bi , ci , di для i  1, 2, , n ).
Условия S i (x i 1 )  fi 1 в левых концах интервалов дают n
уравнений. Аналогично, условия S i (x i )  fi в правых концах дают
еще n уравнений. Условия S i(x i )  S i1 (x i ) во внутренних узлах
добавляют n  1 уравнение. Аналогично, условие непрерывности
вторых производных во внутренних узлах добавляют еще n  1
уравнение S i(x i )  S i1 (x i ) . Всего, таким образом, имеется 4n  2
уравнения. Два параметра могут быть выбраны из дополнительных соображений о граничных условиях, то есть об условиях в
концевых узлах. Задача получается определенной – система линейных (относительно коэффициентов) уравнений кубических
парабол включает столько уравнений, сколько в них неизвестных.
О способах учета граничных условий поговорим ниже.
Получим рабочие формулы для сплайн-интерполяции. Если
брать за основу общее выражение кубической параболы, уравнения для функции, для первой и для второй производной будут
иметь разный вид. Это осложнит программирование задачи и
заставит применять для решения линейной системы общий алгоритм, не самый экономичный. Лучше взять за исходную формулу
кубический полином Эрмита (27). Он уже автоматически обеспечивает заданные значения функции и ее производной на концах
интервалов, и остается позаботиться лишь о непрерывности вторых производных. Кроме того, мы далее увидим, что эти уравнения будут трехчленными, то есть матрица линейной системы будет трехдиагональной, что позволит применить для решения этой
системы высокоэффективный метод прогонки [2].
Полином (27) переобозначим символом S i  x  , имея в виду
сплайн для i -го интервала. Чтобы не загромождать обозначение,
кубический порядок полинома будем подразумевать по умолчанию.
Кроме того, первые производные теперь не будут иметь заранее заданные значения, а должны лишь быть равными в узлах
слева и справа. Эти значения, которые будем искать из условий
гладкости, обозначим как неизвестные di 1 и d i . Слагаемые в
скобках, входящих во второй степени, переставим, имея в виду
удобство предстоящего дифференцирования.
С учетом этих изменений формула (27) приобретает следующий вид:
 
S i x  fi 1


(x  x i )2 2 x  x i 1  hi
 fi
h
x  x  2 x
i 1
i
2

 x  hi
h
2
i
h
  d x  x  x  x  .
2
i 1
i
3
i
i 1
i
i 1
3
i
2
  d x  x  x  x  
i
2
i
h
(29)
Вычислим первую производную этого выражения. После очевидных упрощений она принимает вид:
2 x  x i 3x  2x i 1  x i  hi
S i(x ) 
fi 1 
hi3
x  x i 3x  2x i 1  x i

di 1 
hi2









2 x  x i 1 x i 1  2x i  3x  hi
x  x 

i 1
3
i
h
3x  x i 1  2x i
hi2
d .
f
i

(30)
i
Найдем теперь вторую производную сплайна.
Она (после приведения подобных членов) имеет следующий
вид:
12x  4x i 1  8x i  2hi
6x  2x i 1  4x i
S i(x ) 
fi 1 
di 1 
3
hi
hi2
8x  4x i  12x  2hi
6x  4x i 1  2x i
 i 1
fi 
di .
3
hi
hi2
Вычислим значение второй производной в правом конце интервала:
2d
4d
f f
S i x i  i 1  i  6 i 2 i 1 .
(31)
hi
hi
hi
 
Вычислим теперь значение второй производной в левом конце
интервала:
 
S i x i 1  
4di 1
hi

2di
hi
6
fi  fi 1
hi2
.
(32)
Путем увеличения в формуле (32) индекса на единицу вычислим значение второй производной в левом конце следующего,
i  1 -го, интервала.
 
S i1 x i  
4di
hi 1

2di 1
hi 1
6
fi 1  fi
hi21
.
(33)
Для обеспечения непрерывности второй производной глобального сплайна, потребуем, чтобы значения (31) и (33) были равны.
Перенеся в полученном выражении все неизвестные налево, а
постоянные члены направо, получим уравнение:



di 1hi  2di hi  hi 1  di 1hi 1 



 3  fi 1  fi hi21  fi  fi 1 hi2  .


(34)
В уравнении (34) использовано следующее обозначение для
обратной величины шага:
1
hi  .
hi
Уравнение (34) имеет место для всех внутренних узлов сплайна: i  1, 2, , n  1, и, следовательно, образует систему линейных
(относительно неизвестных d i ) уравнений с трехдиагональной
матрицей (в каждое уравнение входят только три соседних неизвестных).
Добавив к ним условия для начального и конечного узлов (так
называемые граничные, или краевые условия), можно ее решить.
Непрерывность глобального сплайна обеспечивается заданием
узловых значений функции fi , непрерывность его первых производных – найденными значениями d i , а непрерывность второй
производной – условием равенства в узлах выражений (31) и (33),
положенного в основу вывода системы уравнений (34).
1.7.3. Граничные условия
Уравнений (34) в системе столько, сколько внутренних узлов,
а неизвестных столько, сколько всего узлов, то есть на 2 больше.
Недостающие уравнения возмещаются граничными условиями,
накладываемыми в нулевом и в последнем узлах.
Возможны несколько способов учета граничных условий.
1.
Если в граничных точках известны значения первых
производных, учитывают их. Получается так называемый «фундаментальный кубический сплайн».
Система (34) пополняется уравнениями
d0  f0; dn  fn.
2.
Если в граничных точках известны значения вторых
производных, учитывают их. Для этого достаточно в уравнении
(33) положить i  0 и приравнять (33) известной величине f0 :
f0  
4d 0
h1

2d1
h1
6
f1  f0
h12
.
Аналогично, в уравнении (31) достаточно положить i  n и
приравнять (5) известной величине fn :
fn 
2dn 1
hn

4dn
hn
6
fn  fn 1
hn2
.
3.
Частный случай предыдущего. Если в граничных точках вторые производные равны нулю, получается так называемый
«естественный кубический сплайн». Термин «естественный»
здесь имеет тот смысл, что вторая производная, равная нулю,
означает нулевое ускорение в начале движения и в момент остановки – движение без толчков («мягкий старт» и «мягкая посадка»). Геометрически это означает, что за пределами глобального
интервала интерполирования функция является прямой линией,
сопряженной с краевыми кубическими сплайнами.
Однако благозвучие термина «естественный сплайн» в сочетании с простотой уравнений для этого случая провоцирует без-
думное применение этого варианта даже в тех случаях, когда физическая модель не обеспечивает нулевую вторую производную в
граничных точках. За счет такого неоправданного допущения
точность интерполяции понижается до второго порядка.
4.
Если интерполируемая функция периодична, и ее период совпадает с интервалом интерполяции, естественно потребовать, чтобы первые и вторые производные сплайна в нулевом и
последнем узле совпадали.
5.
Если, как часто бывает, нет никакой информации о
производных на концах интервала интерполяции, накладывают
условия непрерывности третьих производных в первом (не в нулевом!) и в предпоследнем узлах. Поскольку третьи производные
кубических полиномов суть константы, такое условие эквивалентно попарному объединению первой и последней пар интервалов, откуда и происходит название этого способа – «условие
отсутствия узла». Это один из лучших способов поведения при
отсутствии информации о граничных условиях.
6.
В условиях отсутствия информации о граничных значениях производных возможна и иная стратегия, более удобная в
вычислительном отношении. Можно по четырем крайним узлам
построить кубический полином Лагранжа и вычислить его производную в граничной точке. Такая стратегия реализована в системе MathCAD [3] в виде встроенной функции cspline, что означает сплайн с кубической аппроксимацией граничных производных.
Можно брать только по три крайних узла и строить по ним
квадратичные полиномы Лагранжа, по которым оценивать граничные значения производных. Такая стратегия реализована в
системе MathCAD [3] в виде встроенной функции pspline, что
означает сплайн с параболической аппроксимацией граничных
производных.
Наконец, можно брать только по два крайних узла и строить
по ним линейные полиномы Лагранжа, по которым оценивать
граничные значения производных. Такая стратегия реализована в
системе MathCAD [3] в виде встроенной функции lspline, что
означает сплайн с линейной аппроксимацией граничных производных.
Подчеркнем, что во всех перечисленных случаях система
MathCAD использует кубический сплайн, теория которого рассмотрена выше. Термины «линейный» и «параболический» относятся только к способу аппроксимации первой производной в
граничных точках.
ПРИМЕР.
Рассмотрим сплайн-интерполяцию кривой Рунге
1
(35)
f x  
1  25x 2
на интервале x   1;1 , с которой так плохо справился поли

ном Лагранжа (см. рис.1). С этой целью зададим вектор узлов


x  1; 0.8; 0.6; 0.4; 0.2; 0; 0.2; 0.4; 0.6; 0.8;1
а также вектор узловых значений функции (35)

T
,

y  0.038; 0.059; 0.1; 0.2; 0.5;1; 0.5; 0.2; 0.1; 0.059; 0.038
T
.
Иначе говоря, векторы x и y совместно задают таблицу значений функции.
Строим кубический сплайн с помощью встроенной функции
системы MathCAD
s : cspline x , y 
Задача построения сплайна уже решена! Первые три элемента
вектора s содержат служебную информацию, остальные – вторые производные составного сплайна в узловых точках. Недостающие граничные условия определены путем построения кубических полиномов Лагранжа по четырем крайним точкам слева и
справа. Все это выполнено автоматически и мгновенно.
Теперь мы можем использовать построенный сплайн для интерполяции между узловыми точками. Для этого применяется
встроенная функция interp s, x , y , t  ,
где s – построенный выше вектор-сплайн;
x и y – векторы, по которым строился сплайн, (то есть, таблично заданная функция);
t – значение аргумента, для которого выполняется интерполяция.
Вычислим, например, погрешность интерполяции при
x  0.95 . Из рис.1.1 видно, что при этом значении полином Лагранжа давал гигантскую погрешность.
В данном случае получаем
f  0.95   interp s, x , y, 0.95   1.2  103, то есть погрешность имеет порядок 0,001.
Можно построить чертеж (рис.1.2), аналогичный рис.1.1,
на котором сравнить графики функции Рунге и ее кубического
сплайна:
1
interp( s  x  y  t)
f ( t)
0.5
0
1
0.5
0
0.5
1
t
Из рис.1.2 видно, что графики функции Рунге и ее сплайнинтерполянта практически не различаются (сливаются в одну
линию).
Рис.1.2. Сплайн функции Рунге
Download