Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие 126.pdf
Скачиваний:
12
Добавлен:
30.04.2022
Размер:
424.29 Кб
Скачать

3.2. Интерполирование функций кубическими сплайнами

Пусть отрезок [a,b] разбит на n частей точками

{xi }: a = x0 < x1 < x2 <... < xi1 < xi < xn =b .

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

интервалов (xi1, xi ) (i =1, 2,...., n) , причем в точках стыка двух интервалов xi (i =1,..., n 1) функция непрерывна вместе

со своими производными до порядка не выше k.

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

Пусть на отрезке [a,b] определена функция y = f (x) , значение которой в точках xi равны yi = f (xi ) .

Задача интерполяции функции y = f (x) на отрезке [a,b]

кубическим сплайном (сплайном третьей степени) состоит в нахождении функции S(x) , равной многочлену третьей

степени Si (x) на каждом отрезке [xi1, xi ]

(i =1,

2,...., n) , т.е.

S(x) = S(x

) = ai x3

+ ai x2

+ ai

x + ai

,

x [x

i1

, x

],

(3.3)

i

0

1

2

3

 

 

 

i

 

 

причем значения сплайна в узлах интерполяции

xi

равны

соответствующим значениям функции

yi

и сплайн-функция

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

36

S(xi ) = Si+1(xi ) = yi (i = 0, 1, 2,..., n 1), S(xn ) = Sn (xn ) = yn , (3.4)

Si (xi ) = Si+1(xi )

(i =1, 2,..., n 1),

(3.5)

S'i (xi ) = S'i+1 (xi )

(i =1, 2,..., n 1),

(3.6)

S"i (xi ) = S"i+1 (xi )

(i =1, 2,..., n 1).

(3.7)

Условия (3.4) - (3.7) дают 4n 2 линейных алгебраических уравнений для определения 4n неизвестных коэффициентов

aip ( p = 0, 1, 2, 3; i =1, 2,...., n)

при

соответствующих

степенях x в многочленах Si (x) .

Можно показать, что интерполяционный кубический сплайн для функции y = f (x) существует и является

единственным, если вместе с уравнениями (3.4) - (3.7) удовлетворяется какая-либо пара дополнительных условий (краевые условия) следующего типа:

1.S'(a) = f '(a), S'(b) = f '(b);

2.S"(a) = f "(a), S"(b) = f "(b);

3.S'(a) = S'(b), S"(a) = S"(b).

Рассмотрим случай разбиения отрезка [a,b] на n равных

частей

с

шагом

h,

для

которого

x0 = a,

x1 = x0 + h,..., xi+1 = xi + h,..., xn

= b и

h = (b a) / n .

Разберем построение интерполяционного кубического сплайна отдельно для условий 1 и 2 типов.

При построении сплайна, удовлетворяющего краевым условиям первого типа, введем величины mi = S'(xi ) ,

называемые иногда наклонами сплайна в точках (узлах)

xi (i = 0, 1,..., n) .

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

S(x) = Si (x) = yi1

(x xi )2 (2(x xi

1) + h)

+

h3

 

 

 

 

 

+ yi

(x xi1)2 (2(xi x) + h)

+

 

 

h3

 

 

 

 

 

 

 

37

 

 

+ m

i1

(x xi )2 (x xi1)

+ m

(x xi1)2 (x xi )

 

,

 

 

 

h2

i

h2

 

 

 

x [xi1, xi ] (i =1, 2,..., n)

 

 

(3.8)

удовлетворяет условиям (3.4),

(3.5), (3.6) для любых

mi . Из

условий (3.7) и краевых условий первого типа можно

определить n +1 параметр mi .

 

 

 

Действительно,

 

 

легко

проверить,

что

S(xi1) = Si (xi1) = yi1 ,

S(xi ) = Si (xi ) = yi

(i =1, 2,..., n) .

Кроме того, вычисления показывают, что

 

 

S'(xi ) = S'i (xi ) = mi ,

 

 

 

S'(xi ) = S'i+1 (xi ) = mi (i =1, 2,..., n).

 

Если учесть, что

 

 

 

 

 

 

 

 

 

S"i (xi ) =

2mi1

+

4mi

6

yi yi1

 

(i =

1, 2,..., n

1),

 

h2

 

h

 

h

 

 

 

 

 

S"i+1 (xi )

= 4mi

2mi+1 6

yi+1 yi

(i

=1, 2,..., n

1),

h2

 

h

 

h

 

 

 

 

 

а также краевые условия первого типа и условия (3.7), то

получим систему из

n +1 линейных уравнений относительно

неизвестных mi :

 

 

 

 

m

 

= b = f '(a),

 

 

 

 

 

0

0

 

3(yi+1

yi1)

 

 

 

 

 

 

 

(i =1, 2,..., n 1),

(3.9)

mi1 + 4mi + mi+1

= bi

h

 

 

= b

 

= f '(b).

 

 

 

m

n

n

 

 

 

 

 

 

 

 

 

 

 

Решение этой системы позволяет найти значения неизвестных mi и определить интерполяционный сплайн в

виде соотношения (3.8).

38

Матрица А системы (3.9) имеет порядок n +1 и является трехдиагональной:

1

0

0

0

... 0 0 ...

0

 

 

 

4

1

0 ... 0 0 ...

0

 

1

 

 

0

1

4

1 ... 0 0 ...

0

 

 

 

 

 

 

 

 

 

A = ..............................

 

.

 

0

0

0

0

... 1 4 1

0

 

 

 

 

0

0 0 0

... 0 1 4

1

 

 

 

 

0

0

0

0

... 0 0 0

1

 

Метод Гаусса (метод исключения неизвестных) для системы (3.9) значительно упрощается и носит название метода прогонки. Прямой прогонкой находятся так называемые прогоночные коэффициенты:

L

0

= 0,

M

0

=b

0

,

L

i

=

1

, M

i

= L

(M

i1

b ) (i =1, 2,..., n 1).

 

 

 

 

 

 

 

 

Li1 + 4

i

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обратной прогонкой последовательно определяют неизвестные mi :

mn = bn ,

 

 

 

 

 

 

m

i

= L m

i+1

+ M

i

 

(i = n 1, n 2,..., 0).

 

i

 

 

 

 

Пример 1.

 

 

 

 

 

π

построить кубический сплайн

На отрезке 0,

2

 

 

 

 

 

 

 

 

 

с шагом h = π2 , удовлетворяющий на концах отрезка краевым условиям первого типа и интерполирующий функцию

39

y = sin x . С помощью интерполяционной формулы вычислить приближенное значение sin π6 и сравнить его с точным.

Решение. Будем искать кубическую параболу y = S(x) , удовлетворяющую следующим условиям не концах отрезка

x

0

= 0 и

x = h = π

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y0 = S(x0 ) = sin x0 = 0,

y1 = S(h) = sinh =1,

 

 

m0 = S'(x0 ) = sin' x0 = cos x0 =1,

 

 

m1 = S'(h) = sin'h = cosh = 0.

 

 

Подставим значения h, y0 , y1, m0 , m1

в формулу (3.8) и

получим сплайн вида

 

 

 

 

 

 

 

 

 

 

 

 

S(x) = S1(x) =

x2 (2(h x) + h)

+

(x h)2 x

,

x [0, h];

 

 

 

 

 

 

 

 

 

 

 

 

4(π 3)2

 

 

h3

 

 

 

 

h2

 

 

 

 

S(x) = x

x2

4(4 π)

x3 = x 0,057385x2 0,11074x3.

 

 

 

 

 

 

 

 

 

 

π 2

 

 

π 3

 

 

 

 

 

 

 

 

 

Тогда sin

π

S(π ) = 0,49196983 (точное значение равно 0,5).

 

 

 

 

6

6

 

 

 

 

π

 

 

 

 

 

 

 

 

 

 

Пример 2. На отрезке

 

 

 

 

 

 

 

0,

2

построить кубический сплайн

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

с шагом

h = π , интерполирующий функцию

y = sin x , если

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

заданы значения функции в трех узлах интерполяции:

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

x0

= 0

 

 

x1 = π / 4 = 0,7853982

 

x2 = π / 2 =1,570796

 

sin x

 

y0

= 0

 

 

y1 = 0,7071068

 

 

 

y2 =1

С помощью интерполяционной формулы вычислить

приближенное значение sin

π

(

π

= 0,5235988) и сравнить с

 

6

 

6

 

точным значением 0,5.

40

Решение. Представим сплайн в виде (3.8):

S

1

(x), 0

x π / 4;

S(x) =

 

 

S2 (x), π / 4 x π / 2.

При таком представлении должны удовлетворяться уравнения

(3.9):

m0

= sin' x0

= cos x0 =1,

 

 

 

 

 

 

 

 

3(y2 y0 )

 

3

 

 

 

 

 

 

 

 

m0

+ 4m1 + m2 =

 

 

 

=

 

,

 

 

h

h

 

 

= sin' x

 

= cos x

 

 

 

m

2

2

2

= 0.

 

 

 

 

 

 

 

 

 

 

 

Тогда

 

учитывается,

 

 

что

 

 

 

1+

4m =

12

 

 

или

 

 

 

 

 

12 π

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

π

 

 

 

m

=

= 0,70493,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

4π

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2 (2(h x) + h)

 

 

(x h)2 x

 

 

 

x2 (x h)

 

 

 

 

 

 

S

 

(x) = y

 

+

 

+ m

 

, 0 x h;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

 

 

 

 

 

h3

 

 

 

 

h2

 

 

 

1

 

 

h2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S

2

(x) = y

(x 2h)2 (2(x h) + h)

+

(x h)2 (2(2h x) + h)

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

h

3

 

 

 

 

 

 

 

 

 

 

 

 

h3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 (x h)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ m

 

(x

2h)

,

 

 

h x 2h,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

h

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

получим, в частности, выражение для функции S1(x) :

 

 

 

 

S (x) = y

 

x2 (2(h x) + h)

+

(x h)2 x

+ m

x2 (x h)

=

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

 

 

h3

 

 

 

 

 

 

 

h2

 

 

 

1

 

 

h2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

π .

 

 

 

 

 

= x 0,0050683975x

2 0,15514782x3 , 0 x

 

 

 

 

 

 

 

 

 

 

 

π

 

 

π ) = 0,499938.

 

 

 

 

 

 

 

4

 

 

 

Значение sin

S1(

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

41

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

При построении сплайна, удовлетворяющего краевым условиям второго типа, введем величину m~i = S"(xi ) -

значение второй производной сплайна в узле

xi (i = 0, 1,..., n) .

Уравнения (3.4), (3.5), (3.7) будут удовлетворены, если интерполяционный кубический сплайн представить в виде

S(x) = Si (x) = yi1

 

(xi x)

+ yi

(x xi1)

 

~

 

 

(xi x)3 h2 (xi x)

 

 

 

 

 

 

 

 

 

+ mi1

 

 

 

 

 

+

 

h

 

 

 

h

 

 

 

 

 

6h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

~

(x x

 

)3

h2 (x x

 

 

)

 

 

 

 

 

 

 

 

 

 

 

 

 

i1

 

 

 

 

 

i1

 

 

 

 

 

 

 

 

+ mi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6h

 

 

 

 

 

 

 

 

 

 

 

 

 

x [xi1,

xi ]

 

 

 

 

 

 

 

 

 

Учитывая, что

 

 

 

(i =1, 2,..., n).

(3.10)

 

yi yi1

 

 

 

 

 

~

+

~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Si (xi ) =

 

 

+

hmi

2hmi

(i =1, 2,..., n 1),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h

 

 

 

 

 

 

 

~ 6

~

 

 

 

 

 

 

 

 

S'i+1 (xi ) =

 

 

yi+1 yi

2hmi

+ hmi+1

 

(i =1, 2,..., n 1),

 

 

 

 

 

 

 

 

 

 

 

h

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

и используя краевые условия второго типа и условия (3.6),

получим систему из

n +1 линейных уравнений относительно

 

 

~

 

 

 

 

 

 

неизвестных mi :

 

 

 

 

 

 

 

~

= f "(a),

 

 

 

 

 

 

m0

 

 

 

 

 

 

 

~

~ ~

 

 

6(yi+1

2yi + yi1)

 

 

 

 

 

 

(3.11)

mi1 + 4mi + mi+1

=

 

 

 

(i =1, 2,..., n 1),

 

 

h2

 

~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

mn = f "(b).

 

 

 

 

 

 

Системы (3.9) и (3.11) являются частными случаями системы линейных алгебраических уравнений следующего вида:

u

= b ,

 

0

0

(3.12)

ui1 + 4ui + ui+1 = bi (i =1, 2,..., n 1),

 

= bn .

 

un

 

 

42