exponenta event banner

Сплайны панели инструментов фитинга кривой и сплайны MATLAB

Сплайны панели инструментов фитинга кривой

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

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

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

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

Однако в течение многих лет функции сплайна панели инструментов «Фитинг кривой» выходили за рамки программ практического руководства по сплайнам. Панель инструментов теперь поддерживает форму «рассеянных трансляций», или stform, для обработки построения и использования двумерных тонколистовых сплайнов, а также два способа представления рациональных сплайнов, rBform и rpform, для обработки NURBS.

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

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

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

Сплайны

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

S: = ¼, кмкм

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

Соответственно, S содержит базис (фактически бесконечно много оснований), то есть последовательность f1,..., 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, получаемой из последовательности break, и последовательностью startследующими условиями:

  • Имеют   1, которые имеют место в t точно в k раз

  • Для каждого из i = 2: l, имеют (i) имеют место в t точно  k-мкi раз

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

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

Сплайны MATLAB

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

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

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

Функции сплайна панели инструментов «Фитинг кривой» (Curve Fitting Toolbox) были запущены как расширение среды MATLAB, представляющей интерес для специалистов в области аппроксимации сплайнов, чтобы помочь им в построении и тестировании новых методов аппроксимации сплайнов. Такие люди освоят материал в практическом руководстве по сплайнам.

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

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

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

Функции сплайна панели инструментов фитинга кривой могут обрабатывать векторные сплайны, т.е. сплайны, значения которых лежат в 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 команды являются примерами.

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

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

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

Признание

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

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

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