Было бы удивительно, если разработчики Maple обошли стороной вопросы, связанные с проблемой интерполирования функций. В частности, для построения интерполяционного полинома в Maple предусмотрена процедура interp(). Процедура вызывается с тремя параметрами: списком значений узловых точек, списком значений интерполируемой функции в этих точках, а также названием переменной, которую следует использовать при построении интерполяционного полинома. Например, построим полином по значениям, приведенным в табл. 7.1.
В соответствии со значениями, приведенными в таблице, создаем два списка: сначала список X с узловыми точками, а затем список Y со значениями функции в этих точках.
Таблица 7.1. Табулированные значения для интерполируемой функции
Узловая точка | Значение функции |
-2 | 36 |
-1 | 48 |
0 | 30 |
1 | 0 |
3 | 96 |
После этого можно вызвать процедуру интерполирования, указав описанные выше списки ее параметрами и, кроме того, приняв х за переменную интерполирования.
Стоит заметить, что в качестве результата процедурой interp() возвращается выражение, а не оператор, как это было выше при разработке процедуры построения интерполяционного полинома Лагранжа.
Еще один достаточно популярный способ интерполяции состоит в следующем. На каждом интервале между соседними узловыми точками интерполируемая функция представляется в виде полинома. Но в отличие от, скажем, интерполяции Лагранжа, где один и тот же полином используется для всех точек, в данном случае на каждом интервале полином свой. Кроме равенства интерполяционной функции в узлах табличным значениям функции интерполируемой, на первую накладывается еще и условие непрерывности производных до порядка, на единицу меньшего, чем степень интерполяционных полиномов. Подобный тип интерполяции называется интерполяцией сплайнами, или сплайн-интерполяцией. Наибольшей популярностью пользуется интерполяция кубическими сплайнами.
В Maple для выполнения интерполяции сплайнами может быть использована процедура spline (). Процедура имеет три обязательных параметра. Первые два — это списки с узловыми точками и значениями функции соответственно. Третьим параметром указывается переменная интерполирования. Если четвертый необязательный параметр не указан, то интерполяция будет выполняться кубическими сплайнами, т.е. для "сшивки" узловых точек будут использоваться полиномы третьей степени. Например, если параметрами процедуры указать ранее рассмотренные списки, табулирующие значения функции в узловых точках, получим такой результат.
Четвертым параметром процедуры spline () может быть либо одно из зарезервированных ключевых слов из набора linear (интерполяция линейными зависимостями), quadratic (интерполяция параболами), cubic (кубический сплайн), quartic (интерполяция полиномами четвертой степени), либо целое неотрицательное число, определяющее степень интерполяционного полинома. Причем указание числа от 1 до 4 эквивалентно использованию перечисленных текстовых опций, согласно того порядка, как они были представлены выше.
Внимание!
В качестве четвертого параметра может быть указано любое целое положительное число, не только в диапазоне от 1 до 4. Просто для этих чисел существует альтернативный вызов через текстовую опцию. Например, командой spline(X,У,х,5) можно выполнить интерполяцию рассмотренной выше функции полиномами пятой степени и т.д.
Интерполяция полиномами четвертой степени все той же функции выглядит следующим образом.
Выражения достаточно громоздки. Посмотрим, что будет, если использовать в качестве сплайн-полиномов линейные зависимости.
По сравнению с предыдущим случаем, здесь получен более простой результат. Однако простота — далеко не всегда значит эффективность. В этом несложно убедиться, если построить графики для интерполяционных функций, получаемых при сплайн-интерполяции полиномами разных степеней.
Очевидно, что линейная сплайн-интерполяция является достаточно грубой. По большому счету, это просто соединение интерполяционных точек линиями. Такой тип интерполяции используется крайне редко. Что касается использования полиномов прочих степеней, начиная со второй, то визуально особой разницы между ними (во всяком случае в данном примере) нет. Однако не следует забывать, что степень сплайн-полиномов определяет гладкость полученных кривых. Это важно особенно в тех случаях, когда от полученных в результате интерполяции функций следует брать производные. В этом смысле полиномиальная интерполяция по сравнению со сплайн-интерполяцией обладает тем преимуществом, что и интерполяционный полином, и производные от него однозначно являются функциями непрерывными и гладкими. Поэтому интересно сравнить результаты интерполяции полиномом и сплайн-интерполяции. Для этого построим графики соответствующих интерполяционных функций.
Можно видеть, что все три графика (сплайны третьей и четвертой степени, а также интерполяционный полином четвертой степени) практически совпадают, особенно в левой части рисунка. Правда, интерполяционный полином является более гладкой функцией по сравнению с первыми двумя. При этрм у читателя может возникнуть вопрос: почему интерполяционный полином, степень которого равна четырем, не совпадает со сплайн-функцией, построенной на основе полиномов четвертой степени? Ответ следует искать в тех условиях, из которых определяется сплайн-функция. Так, при выполнении сплайн-интерполяции полиномами степени m по п+1 точкам задействовано п сплайн-полиномов. В каждом из этих полиномов следует определить по т+1 коэффициенту, и всего получаем, таким образом, n (m+1) неизвестных коэффициентов. Равенство интерполяционной функции в узловых точках табличным значениям задает п+1 условий на неизвестные коэффициенты. Кроме того, на внутренних узлах (их всего п-1) предполагается непрерывность производных до порядка т-1 включительно, что дает, вместе с непрерывностью самой функции, (n-l+(m-l)(n-l))=m(n-l) условий. Таким образом, на n(m+l) неизвестных коэффициентов накладывается (m(n-l)+(n+l))=(n(m+l)-(m-l)) условий. Этого, разумеется, мало — необходимо еще т-1 условий. Их, как правило, получают, требуя равенства нулю соответствующего числа старших непрерывных производных на границах области интерполирования. Это так называемый естественный выбор дополнительных условий. В принципе, с математической точки зрения, их можно выбирать произвольным образом — в зависимости от решаемой задачи. В частности, условия эти можно подбирать так, чтобы при интерполяции сплайнами степени п в результате получался интерполяционный полином Лагранжа.