Как сделать сплайн интерполяцию

Добавил пользователь Алексей Ф.
Обновлено: 05.10.2024

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

Рассмотренные выше методы локальной интерполяции, по существу, являются простейшими сплайнами первой степени (для линейной интерполяции) и второй степени (для квадратичной интерполяции).

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

В общем случае для функции y = f(x) требуется найти приближение y = S(x) таким образом, чтобыf(xi) = S(xi) в точках x = xi, a в остальных точках отрезка [a;b] значения функций f(x) и S(x) были близкими между собой. При малом числе экспериментальных точек для решения задачи интерполяции можно использовать один из методов построения интерполяционных полиномов. Однако при большом числе узлов интерполяционные полиномы становятся практически непригодными. Это связано с тем, что степень интерполяционного полинома лишь на единицу меньше числа экспериментальных значений функций. Можно, конечно, отрезок, на котором определена функция, разбить на участки, содержащие малое число экспериментальных точек, и для каждого из них построить интерполяционные полиномы. Однако в этом случае аппроксимирующая функция будет иметь точки, где производная не является непрерывной, т. е. график функции будет содержать точки “излома”.

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

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

Пусть интерполируемая функция f(x)задана своими значениями yi, в узлах хi,
(i= 0, 1. n). Обозначим длину частичного отрезка [xi-1;xi] как hi=xi-xi-1,
(i = 1, 2. n).Будем искать кубический сплайн на каждом изчастичных отрезков [хi-1i] в виде:


(1.3.4-1)


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

Потребуем совпадения значений S(x)в узлах с табличными значениями функции f(x):


(1.3.4-2)


(1.3.4-3)

Число этих уравнений (2n) в два раза меньше числа неизвестных коэффициентов. Для того чтобы получить дополнительные условия, потребуем также непрерывности первой и второй производных сплайна во всех точках, включая узлы. Для этого следует приравнять левые и правые производные S'(x–0), S'(x+0), S"(x–0), S"(x+0) во внутреннем узле xi.

Вычислим выражения для производных S'(x), S"(x)последовательным дифференцированием (1.3.4-1):

Интерполяция - это способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений.

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

Предположим, что есть система несовпадающих точек x i ( i ϵ 0, 1, …, N ) из некоторой области G . Значения функции f известны только в этих точках: y i = f ( x i ), i = 1, …, N .

Процесс интерполяции состоит в поиске такой функции f из заданного класса функций, что F ( x i ) = y i , i = 1, …, N .

Точки x i являются узлами интерполяции, а их совокупность - интерполяционной сеткой.

Пары ( x i , y i ) являются точками данных (базовыми точками).

Функцию F ( x ) - интерполирующей функцией (интерполянтой).

Линейная интерполяция

При линейной интерполяции существующие точки данных М ( x i , y i ) ( i = 0, 1, . n ) соединяются прямыми линиями и функция f ( x ) приближается к ломаной с вершинами в данных точках.

Уравнения каждого отрезка ломаной линии в общем случае разные. Поскольку имеется n интервалов ( x i , x i+1 ), то для каждого из них в качестве уравнения интерполяционного полинома используется уравнение прямой, проходящей через две точки. В частности, для i -го интервала можно написать уравнение прямой, проходящей через точки ( x i , y i ) и ( x i+1 , y i+1 ), в виде:

Геометрическая интерполяция

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

Рассмотрим принцип геометрического метода на примере вычисления квартальных данных на основе годовых.

X [ t ] – исходные данные по годам;

Inc [ t ] = exp ( log ( X [ t +1] / X [ t ]) / 4) – значение инкремента;

Factor [ t ] = (1 + Inc [ t ] + Inc [ t ]^2 + Inc [ t ]^3) / 4 – значение фактора;

X [ t ,1], X [ t ,2], X [ t ,3], X [ t ,4] – квартальные данные в год t .

Из этого следует:

X [ t ,1] = X [ t ] / Factor [ t ];

X [ t ,2] = X [ t ] * Inc [ t ] / Factor [ t ];

X [ t ,3] = ( X [ t ] * Inc [ t ]^2) / Factor [ t ];

X [ t ,4] = ( X [ t ] * Inc [ t ]^3) / Factor [ t ].

Интерполяция для других динамик осуществляется аналогичным образом.

Интерполяция кубическими сплайнами

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

Кубические сплайны лишены этого недостатка. Исследования теории балок показали, что гибкая тонкая балка между двумя узлами достаточно хорошо описывается кубическим полиномом, и поскольку она не разрушается, то аппроксимирующая функция должна быть, по меньшей мере, непрерывно дифференцируемой. Это означает, что функции ϕ( x) , ϕ'( x) , ϕ''( x ) должны быть непрерывными на отрезке [a, b].

Кубическим интерполяционным сплайном, соответствующим данной функции f ( x ) и данным узлам x i , называется функция S ( x ), удовлетворяющая следующим условиям:

на каждом сегменте [ x i -1 , x i ], i = 1, 2, . n функция S ( x ) является полиномом третьей степени;

функция S ( x ), а также ее первая и вторая производные непрерывны на отрезке [a, b];

S ( x i ) = f ( x ), i = 0, 1, . n .

На каждом из отрезков [ x i -1 , x i ], i = 0, 1, . n находится функция S ( x ) = S i ( x ) в виде полинома третьей степени:

Условие непрерывности всех производных до второго порядка записываются в виде:

a i , b i , c i , d i - коэффициенты сплайна, подлежащие определению на всех n элементарных отрезках:

Если функция f ( x ) является полиномом третьей или меньше степени, данные воспроизводятся более точно, если граничные условия сплайна c 0 и c n равны точным значениям второй производной кубического полинома.

Интерполяция многочленом Лагранжа

Интерполяционный многочлен Лагранжа - это многочлен минимальной степени, который принимает данные значения в данном наборе точек. Для n + 1 пар чисел ( x 0 , y 0 ), ( x 1 , y 1 ), …, ( x n , y n ), где все x i различны ( i = 0, 1, . n ), существует единственный многочлен L ( x ) степени не более n , для которого L ( x i ) = y i .

В самом простом случае ( n = 1) - это линейный многочлен и его график - прямая, проходящая через две заданные точки.

Лагранж предложил методику вычисления подобных многочленов:

Где базисные полиномы определяются по следующей формуле:

l j ( x ) обладают свойствами:

являются многочленами степени n ;

l j ( x j )= 1;

l j ( x i ) = 0 при ij .

Из этого следует, что L ( x ), как линейная комбинация l j ( x ), может иметь степень не больше n , и L ( x j ) = y j .

Полиноминальная интерполяция

Полиномиальная интерполяция является наиболее известным из методов одномерной интерполяции. Её достоинствами являются простота реализации и хорошее качество получаемых интерполянтов.

Данный метод представляет полином n -ой степени P 0, 1, …, n -1, n , проходящий через n точек (с 0-ой по n -ую), как функцию двух полиномов n -1-ой степени по формуле:

К полученным полиномам рекурсивно применяется та же формула, до тех пор, пока мы не дойдем до полиномов вида P i , которые вычисляются по формуле P i = y i .

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

Равномерная интерполяция

Значение исходного ряда делится на число наблюдений, попадающих в один период результирующего ряда. Полученное значение присваивается всем наблюдениям нового ряда, в пределах одного периода.

Повторная интерполяция

Значения исходного ряда повторяются на всех наблюдениях ряда с более высокой частотой динамики.

Интерполяция по шаблону

Пусть Input - входной ряд, Output - выходной ряд, Pattern - шаблонный ряд. Обозначим за t текущую дату входного ряда, а за n - количество точек выходного ряда в одном периоде.

Рассмотрим три метода интерполяции по шаблону:

среднее по элементам

по первому элементу

по последнему элементу

Первое значение

Значение первой точки результирующей динамики будет совпадать со значением точки на исходной динамике. Значения в остальных точках результирующей динамики остаются пустыми.

Последнее значение

Значение последней точки результирующей динамики будет совпадать со значением точки на исходной динамике. Значения в остальных точках результирующей динамики остаются пустыми.

Нажмите, чтобы узнать подробности

Цель: изучить интерполирование сплайнами, определение кубического сплайна.

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

Кроме того, построенный многочлен будет иметь высокую степень, что тоже весьма нежелательно. Этих неприятностей можно избежать, разбив отрезок [a, b] на частичные отрезки и построив на каждом из них многочлен невысокой степени, так или иначе приближенный к заданной функции f(x).

Одна из возможностей преодоления этого недостатка заключается в применении сплайн-интерполяции. Иногда такой прием называют кусочно-полиномиальным интерполированием.

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

Наиболее изученным и широко применяемым является вариант, в котором между любыми двумя точками строится многочлен п-й степени.


,

который в узлах интерполяции принимает значения интерполируемой функции и непрерывен вместе со своими (п-1)-й производными. Такой кусочно-непрерывный интерполяционный многочлен называется сплайном.

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

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

Определение кубического сплайна.

Пусть на отрезке [a, b] задана функция y = f(x). Рассмотрим сетку узлов

a=x0 x1 x2 xn = b (1)

и обозначим расстояние между смежными узлами:

hi = xi xi-1, i=1, 2, …, n (2)

определение. Назовем кубическим сплайном функции y = f(x), х [a; b] на сетке (2) функцию S(x), удовлетворяющую условиям:

На каждом частичном отрезке [xi-1; xi] функция S(x) является полиномом третьей степени.

Функция, ее первая S'(x) и вторая S''(x) производные непрерывны на сегменте [a; b].

В узлах интерполяции сплайн принимает значения интерполируемой функции:

S(xi) = f(xi) = fi, i=0, 1, 2, …, n.

На концах сегмента [a; b] вторая производная функции S''(x) удовлетворяет условиям S''(а)= S''(b)=0.

Замечание. На концах сегмента [a; b], в принципе, могут быть заданы и другие условия, например, S''(а)=А, S''(b)=В.

Справедлива следующая теорема.

Теорема. Существует единственный сплайн S(x), удовлетворяющий условиям 1-4.

Проведем доказательство теоремы конструктивным способом, т.е. сведем задачу построения сплайна к определению коэффициентов частичных полиномов третьей степени на каждом из отрезков [xi-1; xi]. Для этого сопоставим отрезку [xi-1; xi] полином Si (x).

Запишем полином Si (x) в виде:


(3)

При этом очевидно, что


(4)


(5)

Подставив xi в (3), (4), (5), получим:

, , (6)

Отсюда следует, что для выполнения условия 3 в узлах интерполяции

: , i= 1, 2, …, n (7)

Требуя непрерывности сплайна в узлах xi , i= 1, 2, …, n-1 и выполнения условия 3 при i=0, получаем:


, i= 1, 2, …, n (8)


Это равенство можно переписать следующим образом:


(9)

Условие 2 относительно непрерывности первой производной S'(x) в узлах xi, i = 1, … n-1, принимает вид:


(10)

и приводит к соотношениям



(11)

Аналогичным образом условия непрерывности второй производной S'' (x) в тех же узлах


(12)



(13)

Наконец, дополнительные граничные условия 4 дают еще два уравнения:


(14)

В итоге мы получили замкнутую систему (9), (11), (13), (14), содержащую в сумме 3п линейных уравнений для отыскания 3п неизвестных: bi, сi , di, i=1,2,…, n.

Удобно формально ввести еще одно неизвестное с0, положив при этом что оно равно нулю: с0 = 0, и первое уравнение в (14) переписать в виде


,

т.е. в форме, аналогичной (13).

Теперь уравнения (13), (14) естественно представить в единообразном виде:


(15)


(16)


Обратим внимание на то, что из системы (15) можно выразить все коэффициенты di через разности , а затем из системы (9) выразить через ci и ci-1 все коэффициенты bi. Подставляя полученные выражения в (11), приходим к системе линейных уравнений для ci:


(17)

Сдвигая индекс i на единицу, получаем симметрическую форму записи уравнений (17):


(18)

Кроме того, согласно (16)

с0 = сп = 0 (19)

Система (18) содержит (п-1) уравнение с (п-1)-м неизвестным:

Величины с0 и сп определены дополнительными соотношениями (19). Если сетка (1) равномерная, т.е. hi=h=const, то уравнения (18) принимают особенно простой вид:

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

завершив тем самым построение сплайна. Теорема доказана.

Замечание о решении системы

Уравнения (18) имеют так называемую трехточечную структуру. Такие системы имеют следующий вид:

y0=0, yn=0 (24)

соответствует системе линейных уравнений с трехдиагональной матрицей Т для определения вектора неизвестных у =(у1, у2, …, уп-1):

Ту=F,

При этом легко видеть, что в нашем случае

решение таких систем эффективно решается с помощью методов прогонки.

Для функции y=f(x)=3 x на отрезке [-1; 1] с узлами интерполяции
х0=-1, х1=0, х2=1. Построить кубический сплайн.

Найти его значение при х=1/2 (т.е. приближенно ). Определить погрешность сплайна.

Решение. В данном случае имеем равномерную сетку с шагом h=1. на сетке одна внутренняя точка – х1 и две граничные: х0 и х2. система (20) сводится к одному уравнению относительно коэффициента с1, которое с учетом дополнительных соотношений (16), определяющих нулевые значения коэффициентов с0 и с2, принимает вид:

таким образом, с0=0, с1=2 и с2=0. Остальные коэффициенты сплайна определим из формул (7), (21), (22): а1=1, а2=3, d1=2, d2=-2, b1=4/3, b2=7/3.

Теперь можно выписать кубические полиномы, определяющие сплайн:

Легко проверить, что построенная таким образом функция S(x) непрерывна вместе с первой и второй производной во внутренней узловой точке х=0.

Вычислим значение сплайна в точке х=1/2, т.е посчитаем приближенное значение :

Значительная погрешность обусловлена, прежде всего, большим шагом h=1. определенную роль играют условия (4):

Вторая производная рассматриваемой функции f(x)=3 x в точках х=±1 в ноль не обращается, т.е. условие (*) дает о ней искаженную информацию. Если при построении сплайна учесть истинные значения вторых производных в граничных точках, то точность аппроксимации улучшится.

2D- и 3D-сплайны представляют собой кривые с постоянно изменяющимся радиусом кривизны. В Inventor поддерживаются два типа сплайнов: сплайны с интерполяцией и сплайны по управляющим вершинам. Сплайны с интерполяцией можно создавать как на 2D-, так и на 3D-эскизах, а также на поверхности.

Новые возможности: 2019

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


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

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

Создание сплайнов с интерполяцией

  1. В активном эскизе выберите вкладку "Эскиз" панель "Создать" > "Сплайн с интерполяцией" (2D) или вкладку "3D-эскиз" панель "Рисование" "Сплайн с интерполяцией" (3D-эскиз).
  2. Щелкните в графическом окне, чтобы задать первую точку, или выберите существующую.
  3. Продолжайте щелкать мышью для создания определяющих точек. Для закрытия контура щелкните правой кнопкой мыши начальную точку и выберите "Закрыть кривую".

Создание сплайнов по управляющим вершинам

  1. В активном эскизе выберите вкладку "Эскиз" панель "Создать" "Сплайн по управляющим вершинам" (2D) или вкладку "3D-эскиз" панель "Рисование" "Сплайн по управляющим вершинам" (3D-эскиз).
  2. Щелкните в графическом окне, чтобы задать первую точку, или выберите существующую точку.
  3. Продолжайте щелкать мышью для создания вершин.
  4. По завершении нажмите кнопку "ОК", чтобы завершить построение сплайна и закрыть команду, или нажмите кнопку "Применить", чтобы завершить построение сплайна и создать дополнительные сплайны.

Изменение типа сплайна

  • Щелкните правой кнопкой мыши сплайн с интерполяцией и выберите "Преобразовать в сплайн по управляющим вершинам".
  • Щелкните правой кнопкой мыши сплайн по управляющим вершинам и выберите команду "Преобразовать в интерполяцию".

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

Фиксация длины сплайна

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

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

Редактирование сплайнов с интерполяцией

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



    Совет: Для удаления сплайна с сохранением определяющих точек преобразуйте их в центр, а затем выберите сплайн и нажмите кнопку "Удалить".

    • Стандарт. Построение кривых с плавной непрерывностью между точками.
    • Минимум. Построение плавных кривых с улучшенным представлением и распределением кривизны. Сплайны с минимальной энергией содержат больше данных, поэтому поверхности, созданные с их помощью, требуют больше времени для расчета и создания больших файлов.
    • AutoCAD. Использование метода AutoCAD с определением сплайнов. Сплайны с интерполяцией, в которых используется метод определения AutoCAD, не имеют ручек и не подходит для создания поверхностей класса A.

    Редактирование сплайнов по управляющим вершинам

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


      Прим.: Управляющие точки можно удалить тогда, когда в сплайне их содержится не меньше четырех, включая начальную и конечную точки.

      Визуализация кривизны сплайна

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

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

      Читайте также: