Математический анализ в Maple 9



Общая задача интерполирования

В качестве базовых интерполяционных функций можно выбрать, по большому счету, любой их набор — главное, чтобы такие функции были независимы. Причем линейной независимости функций в обычном понимании этого термина в данном случае недостаточно. Предположим, что интерполяция выполняется по узлам хо,х1,...,х„. Количество базовых интерполяционных функций должно совпадать с количеством узловых точек. Пусть это будут функции. Чтобы функции могли использоваться в процессе интерполяции, они должны быть такими, чтобы любая их линейная комбинация имела на интервале интерполяции число корней (т.е. точек, где эта линейная комбинация обращаются в нуль) по крайней мере на единицу меньше, чем число базовых узлов. Такие системы функций еще называют системами Чебышева.

Интерполяционную функцию ищем в виде Fn(x) = a0<po(x) + a,<pt(x) + ... + a,<pn(x). Коэффициенты а, находятся из тех условий, что в узловых точках значения интерполяционной функции совпадают с табулированными значениями интерполируемой функции: Fll(xl) = yi. Таким образом, имеем систему п+1 уравнений относительно п+1 неизвестного коэффициента а,. Из этих уравнений коэффициенты определяются однозначно.

Ниже представлен код процедуры, с помощью которой можно выполнять интерполяцию разными базовыми функциями.

Параметрами процедуры Mylnt() являются список базовых точек А, по которым строится интерполяционная функция, а также оператор f (), который задает общий вид базовых интерполяционных функций.

Исключительно в целях наглядности в самом начале процедуры задается два массива — узловых точек х и значений функции в этих точках у. Массивы определяются исходя из данных списка А. Переменная п инициализируется со значением, на единицу меньшим числа элементов списка А. В этом случае нумерация узлов начинается с индекса 0. Далее с помощью оператора цикла переменной s присваивается значение, структура которого совпадает со структурой искомой интерполяционной функции. В этом выражении коэффициенты a[i] являются неизвестными переменными, которые следует определить.

Используя выражение s в качестве основы, переменная L определяется как оператор, действие которого на аргумент t эквивалентно вычислению данного выражения.

На следующем этапе в процедуре определяется система уравнений eqsys, из которой будут искаться неизвестные коэффициенты разложения. Система поочередно дополняется уравнениями, которые фиксируют равенство значений интерполяционной функции L() заданным массивом у табличным значениям интерполируемой функции в узловых точках. Система решается относительно коэффициентов а[к], и полученные в качестве решения значения присваиваются этим коэффициентам (команда assign(%)). Результатом процедуры возвращается оператор L().

Проверим, как работает процедура. Для этого зададим следующий список.

В переменную L1 запишем интерполяционную функцию (полином), построенную по степенным функциям.

В качестве базовых интерполяционных функций можно взять ортогональные полиномы. Например, рассмотрим полиномы Чебышева первого рода, которые, как известно, задаются следующим образом.

Результат интерполирования по этим полиномам запишем в переменную L2.

На первый взгляд кажется, что получено новое, отличное от Ы, выражение, но это не так. Убедиться в последнем можно, упростив его.

Ничего удивительного в этом нет, ведь полиномы — есть полиномы, даже если это полиномы Чебышева.

Еще один класс функций, представляющих особый интерес, — тригонометрические функции. Рассмотрим следующую систему.



На заметку
Командой iquo(n,m) в качестве результата возвращается целая часть отделения п на ш, в то время как irem(n,m) есть остаток от целочисленного деления n на m.

Чтобы представить себе, что же за система функций задается оператором F(), рассмотрим такую последовательность.

Видим, что это набор тригонометрических функций (чередующиеся синусы и косинусы), используемых, корме прочего, при выполнении разложений в ряд Фурье.

Внимание!
Приведенная выше система функций часто используется для интерполирования периодических функций. Перечисленные функции в совокупности периодичны с периодом 2л. Поскольку в данном случае функция интерполируется на сегменте от -2 до 2, т.е. длина сегмента равна 4 (что меньше указанного периода), интерполяция возможна. В противном случае пришлось бы выполнять замену переменных.

Теперь строим интерполяционную функцию.

Полученное в результате выражение достаточно громоздко, поэтому преобразуем его, перейдя к формату представления чисел с плавающей точкой.

Помня о том, что нет такой формулы, которая была бы нагляднее картинки, построим две интерполяционные функции — по полиномам (L1) и тригонометрическим функциям (L3).

Сплошная линия для полиномиальной интерполяции, штрихованная — для интерполяции тригонометрическими функциями.

Видим, что функции ведут себя практически одинаково. Однако между такими интерполяционными функциями есть существенная разница, о которой следует помнить: при интерполяции степенными функциями, если выйти за пределы области интерполирования (в этом случае имеем дело с задачей экстраполяции), полином, в конечном счете, стремится к бесконечности, тогда как при интерполяции тригонометрическими функциями получаем ограниченную, периодичную интерполяционную функцию.