Сплайны Curve Fitting Toolbox и сплайны MATLAB

Curve Fitting Toolbox

Функции Curve Fitting Toolbox™ spline содержат версии существенного MATLAB® программы пакета B-сплайн (расширен для указателя также векторных сплайнов), как описано в «Практическом руководстве по сплайнам» (Applied Math. Sciences Vol. 27, Springer Verlag, New York (1978), xxiv + 392p; пересмотренное издание (2001), xviii + 346p), далее именуемое PGS. Тулбокс облегчает создание и работу с кусочно-полиномиальными функциями.

Типичное использование, предусмотренное для этого тулбокса, включает конструкцию и последующее использование кусочно-полиномиального приближения. Эта конструкция будет включать подбор кривой данных, но существует широкая область значений возможных данных, которые могут быть подогнаны. В самой простой ситуации задаются точки (t i ,y i) и ищет кусочный полином f функции, которая удовлетворяет f (t i) = y i, все i, более или менее. Точная подгонка будет включать интерполяцию, приблизительная подгонка может включать приближение методом наименьших квадратов или сглаживание сплайна. Но функция, которая будет аппроксимирована, может быть также описана более неявными способами, для примера как решение дифференциального или интегрального уравнения. В таком случае данные будут иметь форму (Af) (t i), с A некоторого дифференциального или интегрального оператора. С другой стороны, можно хотеть создать сплайн, точное местоположение которой менее важно, чем его общая форма. Наконец, во всем этом, можно было бы искать функции более чем одной переменной, такие как тензорные сплайны продукта.

Была предпринята осторожность, чтобы сделать эту работу максимально безболезненной и интуитивно понятной. В частности, пользователь не должен беспокоиться только о том, как сплайны строятся или хранятся для дальнейшего использования, и не должен беспокоиться случайного пользователя о таких элементах, как «пропуски» или «узлы» или «коэффициенты». Достаточно знать, что каждая сконструированная функция является просто другой переменной, которая свободно используется как вход (где это уместно) для многих команд, включая все команды, начинающиеся с fn, что означает function. Иногда также может быть полезно знать, что, внутренне к тулбоксу, сплайны хранятся в различных формах с помощью команды fn2fm доступно для преобразования между формами.

В настоящее время тулбокс поддерживает две основные формы для представления кусочно-полиномиальных функций, потому что было обнаружено, что каждая из них превосходит другую в определенных общих ситуациях. B-форма особенно полезна во время конструкции сплайна, в то время как ppform более эффективен, когда кусочно-полиномиальная функция должна быть тщательно оценена. Эти две формы являются почти точно B-представлением и pp-представлением, используемым в A Practical Guide to Splines.

Но с годами функции сплайна Curve Fitting Toolbox вышли за рамки программ в A Practical Guide to Splines. Тулбокс теперь поддерживает форму 'scattered translates', или stform, в порядок обработки конструкции и использования двухмерных тонких пластинчатых сплайнов, а также двух способов представления рациональных сплайнов, rBform и rpform, в порядок обработки NURBS.

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

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

Существуют различные примеры, все доступны через браузер документации. Вам настоятельно рекомендуется взглянуть на некоторые из них или на GUI splinetool, чтобы помочь вам работать со сплайнами.

Сплайны

Рассмотрим набор

S:=Πξ,kμ

из всех (скалярно-оцененных) кусочно-полиномов порядка k с перерывами ξ  1 <... < ξ  l + 1, что для  i = 2... l, может иметь переход через ξi в своей μi-й производной, но не иметь перехода там в какой-либо производной нижнего порядка. Это множество является линейным пространством в том смысле, что любой скаляр, кратный функции в S, снова в S, как и сумма любых двух функций в S.

Соответственно, S содержит базис (фактически бесконечно много оснований), то есть последовательность f 1,..., fn чтобы каждый f в S мог быть записан однозначно в форме

f(x)=j=1nfj(x)aj,

для подходящих коэффициентов aj. Число n, появляющееся здесь, является размерностью линейного S пространства. Коэффициенты aj часто называются координатами f относительно этого базиса.

В частности, согласно Теореме Карри-Шёнберга, наша пространственная S имеет базис, состоящее из B-сплайнов, а именно последовательности всех B-сплайнов вида B(·|tj,...,tj+k), j = 1... n, с последовательностью узлов t полученной из последовательности разрыва ξ и последовательности, µ следующими условиями:

  • Имеют ли как ξ 1, так и ξ l + 1 происходить t ровно k раз

  • Для каждого i = 2: l ξi происходить в t ровно  k - µi раз

  • Убедитесь, что последовательность является неразрешимой и содержит только элементы из ξ

Обратите внимание на соответствие между кратностью узла и плавностью сплайна на этом узле. В частности, в простом узле, то есть узле, который появляется точно один раз в последовательности узлов, только (k  -1) -ая производная может быть прерывистой.

Сплайны MATLAB

Техническое вычислительное окружение MATLAB обеспечивает сплайн приближения через командную spline. Если вызывается в форме cs = spline(x,y), он возвращает ppform кубического сплайна с последовательностью пропуска x который принимает значение y(i) при x(i), все i, и удовлетворяет не граничному условию. Другими словами, командная   cs = spline(x,y) дает тот же результат, что и команда cs = csapi(x,y) доступна в функциях сплайна Curve Fitting Toolbox. Но только последний тоже работает, когда x, y описать многомерные данные сетки. В MATLAB кубическая сплайн в многомерные данные с сеткой обеспечивается командой interpn(x1,...,xd,v,y1,...,yd,'spline') который возвращает значения кубического сплайна интерполирующего тензорного продукта в сетке, заданной как y1..., yd.

Далее, любой сплайн Curve Fitting Toolbox fn... команды могут применяться к выходам MATLAB spline(x,y) Команда с простыми версиями Curve Fitting Toolbox сплайна команд fnval, ppmak, fnbrk доступна непосредственно в MATLAB, как команды ppval, mkpp, unmkpp, соответственно.

Ожидаемый фон

Сплайн Curve Fitting Toolbox начал функционировать как расширение окружения MATLAB, представляющего интерес для экспертов в сплайн- приближение, чтобы помочь им в конструкции и проверку новых методов сплайн- приближение. Такие люди освоят материал в «Практическом руководстве по сплайнам».

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

С учетом этого существуют разделы, такие как Cubic Spline Interpolation, которые предназначены даже для начинающих, в то время как разделы, посвященные подробному примеру, подобному тому, что касается построения сплайна Чебышёва или построения и использования тензорных продуктов, предназначены для пользователей, заинтересованных в разработке собственных сплайн- команды.

Поддержка типа векторных данных

Функции сплайна Curve Fitting Toolbox могут обрабатывать векторные сплайны, т.е. сплайны, значения которых лежат в Rd. Поскольку MATLAB начинался всего с одного типа переменных, типа матрицы, даже сейчас существует некоторая неопределенность в том, как бороться с векторами, то есть списками чисел. MATLAB иногда хранит такой список в матрице всего с одной строкой и другое время в матрице с одним столбцом. В первом образце такая матрица с 1 строкой называется вектором-строкой; во втором образце такая матрица с 1 столбцом называется вектором-столбцом. В любом случае, это просто различные способы хранения векторов, а не различные виды векторов.

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

Точка в Rd, то есть d-вектор, всегда сохранен как вектор-столбец. В частности, если вы хотите поставить n-список d-векторы одной из команд, вы должны предоставить этот список в качестве n столбцы матрицы размера [d,n].

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

Сплайн именования функций

Большинство команд сплайна в этом тулбоксе имеют имена, которые следуют одному из следующих шаблонов:

cs... команды создают кубические сплайны (в ppform)

sp... команды создают сплайны в B-форме

fn... команды работают с функциями сплайна

..2... команды преобразуют что-то

..api команды создают приближение путем интерполяции

..aps команды создают приближение путем сглаживания

..ap2 команды создают приближение методом наименьших квадратов

...knt команды создают (часть) конкретную последовательность узлов

...dem команды являются примерами.

Аргументы для функций сплайна набора инструментов Curve Fitting Toolbox

Для простоты использования большинство функций сплайна Curve Fitting Toolbox имеют аргументы по умолчанию. В ссылочной записи под Синтаксисом мы обычно сначала перечисляем функцию со всеми необходимыми входными параметрами, а затем со всеми возможными входными параметрами. Когда существует больше чем один необязательный аргумент, то, иногда, но не всегда, их точный порядок нематериален. Когда их порядок имеет значение, вы должны задать каждый необязательный аргумент, предшествующий тому, кого вы заинтересованы в. В этой ситуации можно задать значение по умолчанию для необязательного аргумента при помощи [] (пустая матрица) в качестве входов для нее. Описание на странице с описанием указывает значение по умолчанию для каждого необязательного входного параметра.

Как и в MATLAB, пользователю возвращаются только явно заданные выходные аргументы.

Список благодарностей

MathWorks® хотел бы признать вклад Карла де Бура в функции сплайна Curve Fitting Toolbox. Профессор де Бур был автором Toolbox™ Spline с первого релиза до версии 3.3.4 (2008).

Профессор де Бур получил премию Джона фон Неймана в 1996 году и Национальную медаль науки в 2003 году. Он является представителем как Американской академии искусств и наук, так и Национальной академии наук. Автор «Практического руководства по сплайнам» (Springer, 2001).

Некоторые из соглашений об именовании сплайн являются результатом обсуждения с Йоргом Петерсом, в то время аспирантом компьютерных наук в Университете Висконсина-Мэдисона.