MATLAB.Exponenta
–Û·Ë͇ Matlab&Toolboxes

Spline Toolbox

Обзор возможностей и средств Spline Toolbox 3.2

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

Spline Toolbox поддерживает работу со следующими основными формами записи сплайнов:

  •   кусочно-полиномиальная форма (piecewise polynomial form, pp-form, pp-форма);
  •   B-форма (B-form);
  •   рациональные сплайны (rational splines), числитель и знаменатель которых могут быть представлены как в кусочно-полиномиальной форме (rp-form, rp-форма), так и B-сплайнами (rB-form, rB-форма);
  •   сплайн-поверхности, или сплайны типа тонкой пластинки (scattered translates form, stform, st-форма);
  •   сплайны, зависящие от нескольких переменных, представленные тензорными произведениями (tensor product splines).
  • Имеется возможность строить интерполяционные и сглаживающие сплайны и аппроксимировать данные методом наименьших квадратов.

    Функции Spline ToolBox основаны на пакете программ (на языке Fortran), приведенных в книге К. Де Бора:

    Carl de Boor. A Practical Guide to Splines. Applied Math. Sciences Vol. 27, Springer Verlag, New York. 1978.

    Эта книга была переведена на русский язык в 1985г.:

    К. Де Бор. Практическое руководство по сплайнам. Пер. с англ. М.: Радио и связь. 1985.

    В 2001г. вышло новое издание книги К. Де Бора на английском языке.

    При описании работы в Spline ToolBox мы будем придерживаться терминологии, принятой в справочной системе по Spline ToolBox, которая соответствует книге К. Де Бора. В справочной системе по Spline ToolBox ссылка на книгу К. Де Бора обозначена PGS.

    В состав Spline Toolbox входят функции и приложения с графическим интерфейсом пользователя, предназначенные для работы со сплайнами и для демонстрации различных возможностей Spline Toolbox. Функции Spline ToolBox делятся на несколько основных категорий:

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

  •   имя функции начинается с cs - приближение кубическим сплайном в кусочно-полиномиальной форме;
  •   имя функции начинается с sp - приближение сплайном в B-форме;
  •   имя функции начинается с fn - визуализация сплайнов или выполнение операций над ними;
  •   в середине имени функции есть 2 - преобразование сплайна из одной формы в другую или установление связи между узлами (и их кратностями) и точками разрыва;
  •   имя функции заканчивается на api - интерполирование сплайном;
  •   имя функции заканчивается на aps - сглаживание сплайном;
  •   имя функции заканчивается на ap2 - приближение в смысле наименьших квадратов;
  •   имя функции заканчивается на knt - генерирование последовательности узлов сплайна;
  •   имя функции заканчивается на mak - конструирование сплайна по заданным узлам (или точкам разрыва) и коэффициентам;
  •   имя функции заканчивается на dem - демонстрационные приложения.
  • Функции для аппроксимации и интерполирования

    Функции из этой группы предназначены для интерполяции и аппроксимации данных сплайнами в кусочно-полиномиальной форме, B-сплайнами и сплайнами типа тонкой пластинки.

    csape - интерполяция кубическим сплайном в кусочно-полиномиальной форме с различными граничными условиями;

    csapi - интерполяция кубическим сплайном в кусочно-полиномиальной форме с условием "отсутствия узла", т.е. во второй и предпоследней точке разрыва накладываются условия непрерывности третьей производной сплайна;

    csaps - аппроксимация кубическим сглаживающим сплайном в кусочно-полиномиальной форме;

    cscvn - конструирование гладкой кривой, проходящей через заданные точки;

    getcurve - приложение для конструирования гладкой кривой, проходящей через заданные точки, которые задаются щелчком мыши в графическом окне (графический интерфейс для cscvn);

    spapi - интерполяция B-сплайнами;

    spaps - сглаживание кубическими B-сплайнами;

    spap2 - аппроксимация кубическими B-сплайнами в смысле наименьших квадратов;

    spcrv - аппроксимация B-сплайнами с равномерно распределенными узлами;

    tpaps - аппроксимация данных сплайнами типа тонкой пластинки.

    Функции для конструирования сплайнов

    Функции из данной группы служат для построения сплайнов в различных формах по заданным узлам и коэффициентам.

    ppmak - построение кусочно-полиномиальной формы сплайна по заданным разрывам и коэффициентам;

    rpmak - построение рационального сплайна по заданным точкам разрыва и коэффициентам, числитель и знаменатель представляются в кусочно-полиномиальной форме;

    rsmak - построение рационального сплайна по заданным точкам разрыва и коэффициентам, числитель и знаменатель представляются в B-форме (рациональный сплайн в rB-форме);

    spmak - построение B-сплайна по заданным узлам и коэффициентам;

    stmak - построение сплайна типа тонкой пластинки по заданным точкам и коэффициентам.

    Функции для выполнения операций над сплайнами и визуализации сплайнов

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

    fnbrk - получение информации о сплайне: форма, число независимых переменных, размерность (если сплайн - вектор-функция), коэффициенты, базовый интервал, а также сведений, специфических для различных форм сплайнов;

    fndir - вычисление pp-формы производной сплайна, заданного в pp-форме или B-форме, по указанному направлению;

    fnder - вычисление производной сплайна по заданной переменной (или переменных, для сплайна, зависящего от нескольких переменных); результат возвращается в той же форме, что и исходный сплайн (не применяется для рациональных сплайнов и некоторых сплайнов в st-форме); применяется также для нахождения неопределенного интеграла от сплайна;

    fncmb - выполнение арифметических операций над сплайном или сплайнами;

    fnint - нахождение неопределенного интеграла от сплайна в кусочно-полиномиальной форме или B-форме, зависящего от одной переменной;

    fnjmp - вычисление скачка значений сплайна, зависящего от одной переменной, в заданной точке;

    fnmin - нахождение минимального значения сплайна, зависящего от одной переменной (в сочетании с fncmb, разумеется, можно определить и максимальное значение сплайна);

    fnplt - визуализация сплайнов; результат (линия или поверхность) определяется числом независимых переменных и тем, является ли сплайн скалярной функцией или вектор-функцией;

    fnrfn - построение нового сплайна по существующему добавлением узлов или точек разрыва (не предназначена для сплайнов типа тонких пластин);

    fntlr - нахождение коэффициентов разложения сплайна в ряд Тейлора в окрестности заданной точки (без k! в знаменателе);

    fnval - вычисление значения сплайна в заданной точке;

    fnzeros - вычисление корней сплайна, зависящего от одной переменной, на всем интервале определения сплайна или только на заданном интервале;

    fn2fm - преобразование сплайна в заданную форму.

    Функции для работы с узлами, точками разрыва и полюсами интерполяции

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

    aptknt - построение последовательности узлов сплайна заданного порядка по полюсам интерполяции, которая обеспечивает существование сплайна и его единственность;

    augknt - функция для построения последовательности узлов с заданными кратностями;

    aveknt - по заданным узлам сплайна порядка k строит полюса интерполяции как среднее арифметическое k-1 идущих подряд узлов (интерполяция в "усредненных" узлах);

    brk2knt - построение последовательности узлов по точкам разрыва;

    chbpnt - по заданной последовательности узлов и порядку сплайна вычисляет полюса интерполяции (обеспечивающие наилучшую аппроксимацию), которые являются экстремумами чебышевского сплайна того же порядка и с теми же узлами;

    optknt - нахождение оптимальных узлов сплайна по заданным полюсам интерполяции;

    newknt - поиск новых узлов для более точного приближения сплайном;

    knt2brk - по заданной последовательности узлов формирует последовательность точек разрыва и массив кратности соответствующих узлов (кратность узла + число условий непрерывности в узле = порядку сплайна);

    knt2mlt - по заданной последовательности узлов формирует массив той же длины, содержащий информацию о кратности узлов;

    sorted - определение номера интервала в последовательности узлов, которому принадлежит заданная точка;

    Функции для метода коллокаций и работы с почти блочно-диагональными матрицами

    Применение B-сплайнов (например, для приближенного решения обыкновенных дифференциальных уравнений методом коллокации) приводит к матрице, элементы которой являются значениями B-сплайнов и их производных в полюсах интерполяции. Эта матрица коллокаций имеет так называемую "почти блочно-диагональную" форму. Число строк в матрице коллокаций совпадает с числом полюсов интерполяции , а число столбцов равно числу узлов B-формы сплайна минус его порядок. Элемент матрицы коллокаций с индексами i и j равен

    ,

    где - число элементов в множестве , а - j-ый B-сплайн для заданной последовательности узлов.

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

    spcol - формирование матрицы коллокаций по заданным узлам, полюсам интерполяции и порядку сплайна; матрица коллокаций может быть записана в двух форматах: "почти блочно-диагональном" (принятом в Spline ToolBox) и в разреженном для работы с ней базовыми средствами MATLAB (см. информацию о разреженных матрицах в разделе справочной системы MATLAB: Mathematics: Sparse Matrices);

    slvblk - решение системы линейных алгебраических уравнений с коллокационной матрицей; если матрица системы квадратная, то система решается прямым методом, а если система линейных уравнений является переопределенной (с прямоугольной матрицей), то ищется решение в смысле наименьших квадратов;

    bkbrk - выделение блоков матрицы в "почти блочно-диагональной" форме.

    Примечание

    Матрица коллокаций может быть вычислена для сплайнов типа тонких пластин по заданным точкам и полюсам интерполяции. Для этого применяется функция stcol.

    Приложения для изучения сплайнов, интерполяции и аппроксимации

    В состав Spline ToolBox входят два приложения с графическим интерфейсом: bspligui и splinetool, предназначенные для экспериментирования со сплайнами, интерполяции и аппроксимации при помощи сплайнов.

    Приложение bspligui позволяет конструировать B-сплайн, задавая, перемещая и удаляя его узлы при помощи мыши. Автоматически выводятся графики сплайна, его первой, второй и третьей производной.

    Приложение splinetool предназначено для интерполирования и аппроксимирования табличных функции и функций, заданных аналитическими выражениями. В приложении splinetool доступны следующие способы интерполяции и аппроксимации:

  •   интерполяция кубическими сплайнами с граничными условиями различных типов;
  •   интерполяция сплайнами от 2-го до 14 порядка;
  •   сглаживание сплайнами 4, 5 и 6-го порядков;
  •   аппроксимация по методу наименьших квадратов сплайном до 14 порядка.
  • Полюса интерполяции, значения функции в них, веса (в случае аппроксимации) могут быть изменены. Возможно выбрать данные из имеющегося набора, задавать собственные массивы или файл-функцию. Созданный сплайн может быть экспортирован в рабочую среду. В области вывода окна приложения splinetool отображаются команды Spline Toolbox, эквивалентные сделанным установкам в приложении. Выводятся графики ошибки (для функций, заданных аналитическими выражениями), графики 1-ой и 2-ой производных сплайна.

    Полезным приложением является bspline, которое показывает полиномы, составляющие B-сплайн с заданными узлами.

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

    В состав Spline ToolBox входит ряд демонстрационных примеров, объясняющих различные аспекты применения сплайнов. Для запуска этих примеров следует набрать в командной строке playshow, затем через пробел имя демонстрации и нажать <Enter>. В появившемся окне приложения для начала демонстрации необходимо нажать кнопку Start, а для перехода к следующему шагу - Next. Внизу окна на каждом шаге демонстрации выводятся соответствующие команды Spline Toolbox, снабженные комментариями.

    Демонстрация splexmpl - несколько простых примеров приближения сплайнами: интерполяция периодической функции кубическим сплайном и выбор подходящих граничных условий, сглаживание данных, выбор хороших узлов сплайна, интерполяция и приближение функций двух переменных, интерполяция вектор-функции, приближение поверхностей и интерполяция сплайнами типа тонких пластин.

    Используются функции: csapi, csape, spapi, spaps, spap2, tpaps, optknt, augknt, newknt, fncmb, fnplt, fnval, fnder.

    Демонстрация ppalldem - описание кусочно-полиномиальной формы (pp-формы) сплайна, построение сплайна в кусочно-полиномиальной форме по заданным точкам разрыва и коэффициентам, вычисление производных сплайна, интегрирование, выделение частей кусочно-полиномиальной формы, интерполирование вектор-функций и скалярных функций двух переменных.

    Используются функции: spmak, csape, sp2pp, ppmak, fnbrk, fnplt, fnval, fnder, fnint.

    Демонстрация spalldem - описание B-формы сплайна, построение B-сплайна по заданным узлам и коэффициентам, демонстрация свойств B-сплайнов (локальное неотрицательное разложение единицы и то, что значение сплайна в точке является строго выпуклой комбинацией коэффициентов), обсуждение смысла кратности узлов, добавление узлов, построение тензорного произведения сплайнов.

    Используются функции: spmak, spapi, augknt, aveknt, knt2mlt, fnbrk, knt2brk, fnrfn, fn2fm, fnplt, fnval, fnder.

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

    Используются функции: csapi, csape, fnval, fnder, fnint, subplus.

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

    Используются функции: spapi, csapi, fnplt, fnval, fnbrk.

    Демонстрация getcurv2 - построение гладких плоских и пространственных кривых, проходящих через заданные точки.

    Используются функции: cscvn, fnplt.

    Демонстрация histodem - сглаживание гистограммы распределения данных для аппроксимации плотности распределения.

    Используются функции: spline (функция MATLAB), fnplt, fnder.

    Демонстрация csapsdem - построение сглаживающих кубических сплайнов. Обсуждается выбор параметра сглаживания.

    Используются функции: csaps, spaps.

    Демонстрация pckkntdm - выбор узлов сплайна на примере интерполяции и аппроксимации табличной функции, сильно изменяющейся вблизи максимума.

    Используются функции: optknt, newknt, spapi, csapi, spap2, fnplt.

    Демонстрация spcrvdem - построение гладких плоских кривых.

    Используются функции: spmak, spcrv, cscvn, fnval, fnder, fnplt, fnbrk.

    Демонстрация difeqdem - приближенное решение методом коллокации граничной задачи для нелинейного обыкновенного дифференциального уравнения с малым параметром : , . Решение имеет пограничный слой.

    Используются функции: spmak, augknt, newknt, spcol, brk2knt, fnplt.

    Демонстрация chebdem - построение чебышевского сплайна.

    Используются функции: augknt, aveknt, chbpnt, spapi, knt2brk, spbrk, fnder, fnplt.

    Демонстрация tspdem - аппроксимация и интерполяция тензорным произведением сплайнов, приближение поверхности.

    Используются функции: spap2, spapi, augknt, fnbrk, spcol, spmak, fnval,


    Поиск по сайту:

    Система Orphus

    Яндекс.Метрика