Кусочно-полиномиальные функции




Интерполяция

Интерполяция – один из способов аппроксимации данных. В простейшем (одномерном) случае задача интерполяции [1-3] состоит в следующем: заданы точки (xi, yi), , и требуется найти функцию j(x), которая проходит через эти точки (см. рис. 1), т.е.

j(xi)= yi, . (1)

Точки (xi, yi) называют узлами интерполяции, а функцию j(x) – интерполирующей функцией или интерполянтом. Вид функции j(x) определяет способ интерполяции. На практике в качестве интерполирующей функции j(x) часто используются алгебраические полиномы различного вида, так как полиномы легко вычислять, дифференцировать и интегрировать. При этом интерполяция носит название полиномиальной.

Рассмотрим задачу линейной интерполяции. При этом интерполирующая функция имеет следующий вид:

, (2)

где j0(x), j1(x), …, j m (x) – базисные функции.

Используя условие (1) и выражение (2), получаем систему уравнений

(3)

Единственное решение системы (3) существует при двух условиях:

1) число точек (xi, yi), равно числу коэффициентов Сk, ;

2) система уравнений (3) должна быть невырожденной, т.е. определитель системы D ¹0.

Таким образом, если выполняются вышеуказанные условия, то через точки (xi, yi) проходит единственная функция .

В случае линейной полиномиальной интерполяции базисные функции имеют следующий вид: j0(x)= x 0=1, j1(x)= x 1= x, j2(x)= x 2, …, j m (x)= xm. Интерполирующая функция при этом имеет вид полинома степени m: j(x)= Pm (x)= C 0 + C 1 x + C 2 x 2 + … + Cm x m и, следовательно, система (3) примет вид

(4)

В матричной форме систему (4) можно переписать как А*C = B, где

– матрица Ван дер Монда; ; .

Решением системы (4) будет вектор коэффициентов полинома С. Так как определитель матрицы Ван дер Монда всегда отличен от нуля (при xi ¹ xj), то решение системы (4) – единственное. Для решения системы (4) необходимо найти обратную матрицу A. В этом случае решением (4) будет C = A –1* B.

Вывод: Таким образом, через заданные на интервале [ a, b ] точки (xi, yi), всегда можно провести единственный интерполяционный полином j(x)= Pn (x)= C 0 + C 1 x + + C 2 x 2 + … + Cn x n, коэффициенты которого находятся в результате решения системы (4).

 

Пусть ординаты узлов интерполяции вычислены как значения некоторой заданной функции f: y i= f (xi) Выражение (1) определяет поведение функции j(x) только в узлах интерполяции (xi, yi), . Между узлами j(x) может вести себя произвольным образом, сколь угодно далеко, в принципе, отклоняясь от зависимости f (x). Определить погрешность приближения можно, используя выражение для абсолютной ошибки e=| f (x) – j(x) |.

Ошибка полиномиальной интерполяции. Лучший способ проверить качество интерполяции – вычислить значения интерполирующей функции в большом числе точек и построить график. Однако в некоторых ситуациях качество интерполянта можно проанализировать. Предположим, что величина yi представляет собой точные значения известной функции f (x) в точках xi. Пусть Pn (x) – единственный полином n -й степени, интерполирующий функцию по этим точкам (xi, yi), . Предположим, что во всех точках х Î[ a, b ] функция f (x) имеет (n +1) непрерывную производную. Тогда можно показать [1, 2], что абсолютная ошибка интерполяции e(x)=| f (x)– Pn (x) | определяется выражением

, (5)

где - максимальное значение (n +1)-й производной функции f (x) на интервале [ a, b ]; .

Теперь посмотрим, что получится, если интерполировать известную функцию f (x) все в большем и большем числе точек на фиксированном интервале. Выражение для погрешности (5) состоит из трех разных частей; факториал и произведение разностей с увеличением n уменьшают ошибку, но порядок производной при этом растет. Для многих функций величина Mn +1 увеличиваются быстрее, чем (n +1)!. В результате полиномиальные интерполянты редко сходятся к обычной непрерывной функции. Практический эффект выражается в том, что интерполирующий полином высокой степени может вести себя "плохо" в точках, отличных от узлов интерполяции (xi, yi), . Поэтому на практике часто используют интерполянты степени не выше 5-6.

Рисунок 2 – интерполяция функции Рунге полиномом степени n

Примером может служить функция Рунге [4] вида R (x)=1/(1+25 x 2), график которой представлен на рис. 2. С увеличением порядка интерполирующего поли­нома при равномерном распределении узлов интерполяции на интервале [–1, 1] происходит ухудше­ние качества приближения на краях интервала. Это объясняется тем, что производные R (x), которые фигурируют в выражении для погрешности интерполя­ции (5), быстро растут с увеличением числа n.

 

Точность приближения зависит не только от числа узлов интерполяции (т.е. порядка интерполирующего полинома), но и от их расположения на интервале [ a, b ]. В простейшем случае выбирается равномерное расположение точек (xi, yi), на интервале [ a, b ] с шагом D x =(ba)/(n –1). Однако, как показывает практика, равномерное расположение не является оптимальным с точки зрения лучшего приближения j(x) к зависимости f (x). Более оптимальным для полиномиальной интерполяции является расположение узлов на интервале [ a, b ] по формуле Чебышева

, . (6)

Выражение (6) определяет так называемое оптимальное распределение узлов интерполяции на интервале [ a, b ].

 

 

Кусочно-полиномиальные функции

 

Функция f(х) называется кусочно-полиномиальной, если на каж­дом из отрезков (i = 1,2,...,n-1; х 1 < х2 < … < хп) она представляет собой многочлен

fi(x) = аi1 хk + аi2 хk-1 + …+ аik х + аi,k +1.

Часто удобно иметь дело не с многочленами f(х), а с многочленами

hi(x) = bi1 хk + bi2 хk-1 + …+ bik х + bi,k +1,

полученными из fi(х) сдвигом отрезка в новое положение . Связь коэффициентов этих двух систем многочленов устанавливается очевидным равенством

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

Функция pp= mkpp (x,B) создает рр-представление кусочно-полиномиальной функции по узлам х и коэффициентам многочленов В. Вектор х должен иметь длину n и содержать координаты узлов х 1, х2,, …, хп. Матрица В должна иметь размеры (n-1) х(k + 1) и содержать коэффициенты многочленов hi (х):

Функция [x,B]= unmkpp (pp) возвращает вектор узлов х и матрицу коэффициентов В по представлению рр кусочно-полиномиальной функции.

Функция yy= ppval (pp,xx) возвращает набор значений уу в точках хх кусочно-полиномиальной функции, заданной представлением pp.

Пример. Рассмотрим кусочно-квадратичную функцию

После сдвига получаем

h (x) = -x2 + 4x,

h2 (x) = 4,

h3 (x) = - (х + 4)2 + 8(x + 4) - 16 = 2 + 4.

Нарисуем графики функций hi (x) и f (x):

xx=[0:0.05:2];

yyl=polyval ([-1 4 0],xx);

yy2=polyval([0 0 4],xx);

yy3=polyval ([-1 0 4],xx);

Subplot(2,3,2)

Plot(xx,yyl,xx,yy2,xx,yy3)

axis([0 2 0 5])

Title('h_l(x), h_2(x), h_3(x) ')

x= [0 2 4 6];

A=[-1 4 0; 0 0 4; -1 0 4];

pp=mkpp(x, A);

xx=[0:0.05:6];

yy=ppval(pp, xx);

Subplot(2,1,2)

plot(xx,yy);

axis([0 6 0 5])

Title('f(x)')

 



Поделиться:




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

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-04-03 Нарушение авторских прав и Нарушение персональных данных


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