Jump to content

Сплайн (математика)

(Перенаправлено из Кубических сплайнов )
Одиночные узлы на 1/3 и 2/3 образуют сплайн из трех кубических полиномов, встречающихся с C. 2 параметрическая непрерывность . Тройные узлы на обоих концах интервала гарантируют, что кривая интерполирует конечные точки.

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

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

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

Введение [ править ]

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

Определение [ править ]

Мы начнем с ограничения нашего обсуждения полиномами от одной переменной . В данном случае сплайн представляет собой кусочно- полиномиальную функцию . Эта функция, назовем ее S , принимает значения из интервала [ a , b ] и отображает их в набор действительных чисел ,

Мы хотим, чтобы S было кусочно определено. Для этого пусть интервал [ a , b ] покрывается k упорядоченными непересекающимися подинтервалами,

На каждой из этих k «кусков» [ a , b ] полином, назовем его Pi . мы хотим определить

На i подинтервале [ a , b ] - м S определяется Pi как ,

Данные k + 1 точек t i называются узлами . Вектор t = ( t 0 , …, t k ) называется вектором узла сплайна. Если узлы равномерно распределены на интервале [ a , b ], мы говорим, что сплайн равномерен , в противном случае мы говорим, что он неоднороден .

Если каждая из частей полинома P i имеет степень не выше n , то говорят, что сплайн имеет степень n (или порядок n + 1 ).

Если в окрестности точки t i , то сплайн называется гладким (по крайней мере) в t я . То есть в момент t i две части полинома P i –1 и Pi имеют общие значения производной от производной порядка 0 (значение функции) до производной порядка r i (другими словами, две соседние части полинома связаны с потерей гладкости не более n r i )

Вектор r = ( r 1 , …, rk такой , –1 ) что сплайн имеет гладкость в момент t i для i = 1, …, k – 1 называется вектором гладкости сплайна.

Учитывая вектор узла t , степень n и вектор гладкости r для t , можно рассмотреть набор всех сплайнов степени n, имеющих вектор узла t и вектор гладкости r . Оснащенный операцией сложения двух функций (поточечное сложение) и взятия действительных кратных функций, этот набор становится реальным векторным пространством. Это сплайн-пространство обычно обозначается

При математическом изучении полиномиальных сплайнов вопрос о том, что происходит, когда два узла, скажем, и ti t i +1 , приближаются друг к другу и становятся совпадающими, имеет простой ответ. Кусочек полинома Pi t ( ) ) исчезает, а кусочки Pi 1 ( t соединяются с и Pi + 1 ( t ) суммой потерь гладкости ti для и ti + 1 . То есть,

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

где t i повторяется j i раз для i = 1, …, k – 1 .

Параметрическая кривая на отрезке [ a , b ]

является сплайновой кривой , если X и Y являются сплайн-функциями одной и той же степени с одинаковыми расширенными векторами узлов на этом интервале.

Примеры [ править ]

Предположим, что интервал [ a , b ] равен [0, 3] , а подинтервалы — [0, 1], [1, 2], [2, 3] . Предположим, что части полинома должны иметь степень 2, а части на [0, 1] и [1, 2] должны объединяться по значению и первой производной (при t = 1 ), а части на [1, 2] и [ 2, 3] объединяются просто по значению (при t = 2 ). Это определит тип сплайна S ( t ), для которого

будет членом этого типа, а также

был бы членом этого типа. (Примечание: хотя часть полинома 2 t не является квадратичной, результат по-прежнему называется квадратичным сплайном. Это показывает, что степень сплайна равна максимальной степени его полиномиальных частей.) Расширенный вектор узла для этого типа сплайна будет (0, 1, 2, 2, 3) .

Самый простой сплайн имеет степень 0. Его еще называют ступенчатой ​​функцией . Следующий по простоте сплайн имеет степень 1. Его еще называют линейным сплайном . Замкнутый линейный сплайн (т. е. первый узел и последний совпадают) на плоскости — это просто многоугольник .

Обычным сплайном является натуральный кубический сплайн . Кубический сплайн имеет степень 3 с непрерывностью C. 2 , т.е. значения, а также первая и вторая производные непрерывны. Естественный означает, что вторые производные сплайн-полиномов равны нулю в конечных точках интервала интерполяции.

Таким образом, график сплайна представляет собой прямую линию вне отрезка, но все же гладкую.

Алгоритм вычисления натуральных кубических сплайнов [ править ]

Кубические сплайны имеют вид

Дан набор координат

мы хотим найти набор из n сплайнов S i ( x ) для i = 0, …, n – 1 .

Они должны удовлетворять:

Определим один кубический сплайн S как набор из 5 элементов ( a , b , c , d , x t ) , где a, b, c, d соответствуют коэффициентам в форме, показанной ранее, а x t равен x j .

Алгоритм расчета натуральных кубических сплайнов:
Входные данные: набор координат C , где | С | = п + 1
Выход: установить сплайны, состоящие из n пятёрок.

  1. Создайте новый массив a размером n + 1 и для i = 0,…, n установите
  2. Создайте новые массивы b и d , каждый размером n .
  3. Создайте новый массив h размера n и для i = 0,…, n – 1 установите
  4. Создайте новый массив α размера n и для i = 1,…, n – 1 установите
  5. Создайте новые массивы c, l, µ, z , каждый размером n + 1 .
  6. Набор
  7. Для i = 1, …, n – 1 задайте следующее:
  8. Набор
  9. Для j = n – 1, n – 2, …, 0 установите следующее:
  10. Создать новый набор Splines и назови это output_set. Заполните его n сплайнами S .
  11. Для i = 0, …, n – 1 зададим следующее:
  12. Выход output_set

Реализация С++:

#include <array>
template<int n>
std::array<std::array<float, 5>, n> natural_cubic_splines_impl(
	const std::array<float, n + 1>& x, 
	const std::array<float, n + 1>& y)
{
	std::array<float, n + 1> a;
	for (int i = 0; i <= n; i++)
		a[i] = y[i];
	std::array<float, n> b, d, h;
	for (int i = 0; i <= n - 1; i++)
		h[i] = x[i + 1] - x[i];
	std::array<float, n> alpha;
	for (int i = 1; i <= n - 1; i++)
		alpha[i] = 3.0f / h[i] * (a[i + 1] - 
			a[i]) - 3.0f / h[i - 1] * (a[i] - a[i - 1]);
	std::array<float, n + 1> c, l, mu, z;
	l[0] = 1, mu[0] = z[0] = 0;
	for (int i = 1; i <= n - 1; i++)
	{
		l[i] = 2 * (x[i + 1] - x[i - 1]) - h[i - 1] * mu[i - 1];
		mu[i] = h[i] / l[i];
		z[i] = (alpha[i] - h[i - 1] * z[i - 1]) / l[i];
	}
	l[n] = 1, z[n] = c[n] = 0;
	for (int j = n - 1; j >= 0; j--)
	{
		c[j] = z[j] - mu[j] * c[j + 1];
		b[j] = (a[j + 1] - a[j]) / h[j] - 
				(h[j] * (c[j + 1] + 2 * c[j])) / 3.0f;
		d[j] = (c[j + 1] - c[j]) / (3.0f * h[j]);
	}
	std::array<std::array<float, 5>, n> output_set;
	for (int i = 0; i <= n - 1; i++)
	{
		output_set[i][0] = a[i];
		output_set[i][1] = b[i];
		output_set[i][2] = c[i];
		output_set[i][3] = d[i];
		output_set[i][4] = x[i];
	}
	return output_set;
}

Примечания [ править ]

Можно задаться вопросом, какое значение имеют более чем n кратных узлов в векторе узлов, поскольку это привело бы к такой непрерывности, как

в месте расположения этой высокой множественности. По соглашению, любая такая ситуация указывает на простой разрыв между двумя соседними частями полинома. Это означает, что если узел ti раз в расширенном векторе узла, все его экземпляры , появляется более чем n + 1 превышающие ( n + 1) -й , можно удалить без изменения характера сплайна, поскольку все кратности n + 1 , n + 2 , n + 3 и т. д. имеют тот же смысл. Обычно предполагается, что любой вектор узла, определяющий любой тип сплайна, отбраковывается таким образом.

Классический тип сплайна степени n, используемый в численном анализе, имеет непрерывность.

это означает, что каждые две соседние части полинома встречаются по своему значению и первым n - 1 производным в каждом узле. Математический сплайн, который наиболее точно моделирует плоский сплайн, представляет собой кубический ( n = 3 ), дважды непрерывно дифференцируемый ( C 2 ), естественный сплайн, который представляет собой сплайн этого классического типа с дополнительными условиями, наложенными в конечных точках a и b .

Другой тип сплайна, который широко используется в графике, например, в программах рисования, таких как Adobe Illustrator от Adobe Systems , имеет кубические части, но непрерывность сохраняется только в лучшем случае.

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

Многие системы автоматизированного проектирования, предназначенные для высококачественной графики и анимации, используют расширенные векторы узлов. например Autodesk Maya . Системы автоматизированного проектирования часто используют расширенную концепцию сплайна, известную как неоднородный рациональный B-сплайн (NURBS).

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

Общее выражение для C 2 интерполирующий кубический сплайн [ править ]

Общее выражение для i- го C 2 интерполяционный кубический сплайн в точке x с естественным условием можно найти по формуле

где

  • – значения второй производной в i -м узле.
  • – значения функции в i -м узле.

Представления и имена [ править ]

Для данного интервала [ a , b ] и данного расширенного вектора узла на этом интервале сплайны степени n образуют векторное пространство . Вкратце это означает, что добавление любых двух сплайнов данного типа дает сплайн этого заданного типа, а умножение сплайна данного типа на любую константу дает сплайн этого заданного типа. Размерность ​ пространство, содержащее все сплайны определенного типа, можно отсчитать от расширенного вектора узла:

Размерность равна сумме степени плюс кратностей.

Если на тип сплайна наложены дополнительные линейные условия, то результирующий сплайн будет лежать в подпространстве. Например, пространство всех натуральных кубических сплайнов является подпространством пространства всех кубических C. 2 сплайны.

Сплайновая литература изобилует названиями специальных типов сплайнов. Эти имена были связаны с:

  • Выбор, сделанный для представления сплайна, например:
  • Выбор, сделанный при формировании расширенного вектора узла, например:
    • использование одиночных узлов для C п –1 непрерывность и равномерное распределение этих узлов на [ a , b ] (что дает нам равномерные сплайны )
    • использование узлов без ограничений на расстояние (что дает нам неравномерные сплайны )
  • Любые особые условия, наложенные на сплайн, например:
    • обеспечение нулевых вторых производных в точках a и b (что дает нам естественные сплайны )
    • требуя, чтобы заданные значения данных находились на сплайне (что дает нам интерполирующие сплайны )

Часто для типа сплайна, удовлетворяющего двум или более основным пунктам выше, выбиралось специальное имя. Например, сплайн Эрмита — это сплайн, который выражается с использованием полиномов Эрмита для представления каждой отдельной части полинома. Чаще всего они используются с n = 3 ; то есть как сплайны Кубического Эрмита . В этой степени их можно дополнительно выбрать только касательно-непрерывными ( C 1 ); откуда следует, что все внутренние узлы двойные. Было изобретено несколько методов, позволяющих подогнать такие сплайны к заданным точкам данных; то есть превратить их в интерполирующие сплайны и сделать это путем оценки правдоподобных значений касательных там, где встречаются каждые две части полинома (что дает нам кардинальные сплайны , сплайны Катмулла-Рома и сплайны Кочанека-Бартельса , в зависимости от используемого метода).

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

  • Для заданного значения аргумента t найдите интервал, в котором он лежит
  • Найдите полиномиальный базис, выбранный для этого интервала.
  • Найдите значение каждого базисного полинома в момент t :
  • Найдите коэффициенты линейной комбинации тех базисных полиномов, которые дают сплайн на этом интервале c 0 , ..., c k –2.
  • Сложите эту линейную комбинацию значений базового полинома, чтобы получить значение сплайна в точке t :

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

Однако для представления, которое определяет сплайн как линейную комбинацию базисных сплайнов, необходимо что-то более сложное. Алгоритм де Бура — эффективный метод оценки B-сплайнов .

История [ править ]

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

Принято считать, что первой математической ссылкой на сплайны является статья Шенберга 1946 года , которая, вероятно, является первым местом, где слово «сплайн» используется в связи с гладкой, кусочно-полиномиальной аппроксимацией. Однако корни этих идей лежат в авиационной и судостроительной промышленности. В предисловии к книге (Bartels et al., 1987) Робин Форрест описывает « лофтинг » — технику, использовавшуюся в британской авиационной промышленности во время Второй мировой войны для изготовления шаблонов самолетов путем пропускания тонких деревянных полосок (так называемых « сплайнов ») через точки. Выложенный на полу большого дизайнерского лофта, техника заимствована из дизайна корпуса корабля. В течение многих лет в практике проектирования кораблей использовались модели для проектирования небольших размеров. Успешный дизайн затем был нанесен на миллиметровую бумагу, а ключевые точки графика были повторно нанесены на миллиметровую бумагу большего размера до полного размера. Тонкие деревянные полоски интерполировали ключевые точки в плавные кривые. Полоски будут удерживаться на месте в отдельных точках (названных Форрестом «утками»; Шенберг использовал «собак» или «крыс»), а между этими точками будут принимать формы с минимальной энергией деформации. По словам Форреста, одним из возможных стимулов для создания математической модели этого процесса была потенциальная потеря критически важных компонентов конструкции всего самолета в случае попадания в чердак вражеской бомбы. Это привело к появлению «конического лофтинга», в котором конические секции использовались для моделирования положения кривой между утками. В начале 1960-х годов конический лофтинг был заменен тем, что мы бы назвали сплайнами, на основе работы Дж. К. Фергюсоном в Boeing и (несколько позже) М. А. Сабином в British Aircraft Corporation .

Слово «сплайн» изначально было словом на диалекте Восточной Англии .

Использование сплайнов для моделирования автомобильных кузовов, по-видимому, имеет несколько независимых истоков. Кредит заявлен от имени де Кастельжау в Citroën , Пьера Безье в Renault и Биркгофа , Гарабедяна и де Бура в General Motors (см. Birkhoff and de Boor, 1965), все за работу, выполненную в самом начале 1960-х или в конце 1950-х годов. По крайней мере, одна из статей де Кастельжо была опубликована, но не широко, в 1959 году. Работа Де Бура в General Motors привела к тому, что в начале 1960-х годов был опубликован ряд статей, включая некоторые фундаментальные работы по B-сплайнам .

Работа также велась в Pratt & Whitney Aircraft, где работали двое авторов (Ahlberg et al., 1967) — первой книги, посвященной сплайнам, а также в «Модельном бассейне Дэвида Тейлора » Федора Тейлхаймера. Работа в General Motors подробно описана в (Birkhoff, 1990) и (Young, 1997). Дэвис (1997) резюмирует часть этого материала.

Ссылки [ править ]

  • Фергюсон, Джеймс С., Интерполяция кривой с несколькими переменными, J. ACM, vol. 11, нет. 2, стр. 221–228, апрель 1964 г.
  • Альберг, Нильсон и Уолш, Теория сплайнов и их приложения, 1967.
  • Биркгоф, Гидродинамика, расчеты реакторов и представление поверхности, в: Стив Нэш (ред.), История научных вычислений , 1990.
  • Бартельс, Битти и Барски, Введение в сплайны для использования в компьютерной графике и геометрическом моделировании, 1987.
  • Биркгоф и де Бур, Кусочно-полиномиальная интерполяция и аппроксимация, в: HL Garabedian (ред.), Proc. Симпозиум General Motors 1964 года, стр. 164–190. Эльзевир, Нью-Йорк и Амстердам, 1965 год.
  • Дэвис, B-сплайны и геометрический дизайн , SIAM News, vol. 29, нет. 5, 1996.
  • Эпперсон, История сплайнов , NA Digest, vol. 98, нет. 26, 1998.
  • Стер и Булирш, Введение в численный анализ. Спрингер-Верлаг . п. 93-106. ISBN 0387904204
  • Шёнберг, Вклад в проблему аппроксимации эквидистантных данных аналитическими функциями, Кварт. Прил. Матем., вып. 4, стр. 45–99 и 112–141, 1946.
  • Янг, Гаррет Биркгоф и прикладная математика, Уведомления AMS, том. 44, нет. 11, стр. 1446–1449, 1997.
  • Чапра, Канале, «Численные методы для инженеров», 5-е издание.
  • Ларри, Шумейкер, «Сплайн-функции: вычислительные методы», SIAM, ISBN 978-1-611973-89-1, (2015).

Внешние ссылки [ править ]

Теория

Функция Excel

Онлайн-утилиты

Компьютерный код

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d8207fcfff3f7240ebffcd0a432827f8__1712651160
URL1:https://arc.ask3.ru/arc/aa/d8/f8/d8207fcfff3f7240ebffcd0a432827f8.html
Заголовок, (Title) документа по адресу, URL1:
Spline (mathematics) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)