Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab_math_1

.pdf
Скачиваний:
7
Добавлен:
31.05.2015
Размер:
779.5 Кб
Скачать

ω′(x j )= (xx0)(xx1)...(xx j1)(xx j+1)...(xxn) (проверьте!).

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

Кубическим интерполяционным сплайном, соответствующим данным узлам интерполяции xi и данным экспериментальным зна-

чениям yi = f (xi ) , называется функция S(x) , удовлетворяющая

следующим условиям:

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

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

3)S(xi ) = yi , i = 0,1,,n .

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

4.4. Отыскание коэффициентов кубического сплайна

 

Введем обозначения hi = xi

xi1 ,

i =1,2,,n . Значения hi

есть

расстояния между соседними узлами интерполяции.

 

 

 

 

 

Согласно данному выше определению на каждом из отрезков

[xi1; xi ] ,

 

i =1,2,,n , будем искать функцию S(x)

в виде полинома

третьей степени, т.е. S(x) = Si(x)

при x [xi1; xi ] , где

 

 

 

 

S (x) =

a

i

(x

i

x) +b (x x

i1

)

+

m

i1

(x

i

x)3 + m

(x x

i1

)3

.

(4.4)

 

 

i

 

 

 

i

 

 

 

 

 

 

hi

 

 

 

 

 

 

6hi

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здесь ai, bi иmi – коэффициенты, которые необходимо найти согласно требованиям определения кубического сплайна.

51

Такой «экзотический» вид многочленов выбран в связи с тем, что так мы автоматически добиваемся выполнения условия непрерывности второй производной функции S(x) во внутренних узлах

интерполяции (в остальных точках отрезка [a;b] она, очевидно, непрерывна). Действительно, для этого необходимо выполнение ра-

венств

′′

′′

 

 

 

 

 

 

 

Si+1(xi )

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

 

 

 

 

Так как

′′

 

mi1 (xi

x) +mi

(x xi1)

и

′′

 

 

 

 

 

 

Si (x) =

 

 

hi

 

Si+1(x) =

 

mi (xi+1 x) +mi+1

(x xi )

 

 

 

 

=

 

′′

′′

 

 

 

 

 

 

hi+1

 

 

, то Si+1(xi ) = mi = Si

(xi ) .

 

 

 

 

 

 

 

 

 

 

 

Теперь найдем значения ai

и bi , исходя из условия, что график

функции S(x)

должен проходить через заданные точки (xi, yi ) . Это

значит, что для всех i =1,2,,n

должны быть выполнены равенства

Si(xi1) = yi1

и

Si(xi ) = yi

. С учетом равенства (1) получаем соот-

ношения:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

i1

h2

 

 

 

 

m

i

h2

 

a

 

= y

 

 

i

, b = y

 

 

i

, i =1,2,,n .

(4.5)

i

i1

 

6

i

 

 

6

 

 

 

 

 

i

 

 

 

 

 

 

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

отметим, что в остальных точках отрезка [a;b] она, очевидно, непрерывна). Для этого мы должны добиться выполнения равенств

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Si+1(xi )

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

i

+b m

i1

(x

i

x)2 +m

(x x

i1

)2

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

i

 

 

 

 

 

 

Так как

Si

(x) =

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

,

то

 

 

 

hi

 

 

 

 

 

 

2hi

 

 

 

 

 

 

 

ai +bi

 

 

 

mi hi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(xi ) =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Si

 

hi

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ai+1 +bi+1

 

mi hi+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Аналогично получаем

Si+1(xi )

=

 

 

 

 

 

 

 

. Приравнивая

 

 

hi+1

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

значения производных и подставляя соотношения (2), получаем равенство

52

yi yi1

+

hi

(m m ) +

mi hi

=

yi+1 yi

+

hi+1

(m m )

mi hi+1

.

hi

 

2

hi+1

 

2

6

i1

i

 

6

i

i+1

 

 

 

 

 

 

 

 

 

 

 

Используя это равенство, получаем систему линейных уравнений, связывающую неизвестные коэффициенты mi при i =1,2,,n 1 :

hi mi1 +2(hi

+hi+1) mi

+hi+1 mi+1

y

i+1

y

i

 

y

i

y

i1

 

 

= 6

 

 

 

 

 

. (4.6)

 

hi+1

 

 

 

hi

 

 

 

 

 

 

 

 

 

 

 

 

На данном этапе мы имеем n +1 неизвестных и n 1 уравнений. Следовательно, для однозначного определения коэффициентов m0, m1,, mn необходимо найти еще два уравнения.

Здесь есть определенная свобода действий. Можно, например, задать условие, что касательная к графику y = S(x) в точке с абс-

циссой x0 = a образует с осью Ox угол α , а в точке с абсциссой xn = b – угол β. Тогда, используя геометрический смысл производной, будем иметь, что S1(x0) = tgα и Sn(xn ) = tgβ. В результате получим два недостающих уравнения

 

 

 

a1 +b1

m0 h1

= tgα и

an +bn

+

mn hn

= tgβ,

 

 

 

 

 

 

h

 

 

 

 

 

 

 

 

 

 

 

2

 

 

h

n

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

что с учетом соотношений (2) дает:

 

 

 

 

 

 

 

 

 

 

 

 

 

1

3

y1 y0

 

 

1

 

3

 

yn yn1

 

 

m0 = −

2 m1

+

 

 

 

 

tgα и mn =−

2 mn1

+

 

 

tg β

 

 

 

. (4.7)

h

 

h

h

n

h

n

 

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

При другом подходе можно приравнять к нулю кривизну линии y = S(x) в точках x0 = a и xn = b . Это будет означать, что в этих

точках радиус кривизны равен , а значит, в окрестностях этих точек график функции y = S(x) будет практически совпадать с

прямой. Посмотрим, какие дополнительные уравнения мы можем получить с учетом этого условия.

Т. к. кривизна линии y = S(x) в точке с абсциссой x находится по формуле

53

 

 

′′

 

 

 

 

 

 

 

 

 

 

 

 

κ(x) =

 

S

(x)

 

 

 

,

(4.8)

(

 

2

)

3/2

 

 

 

 

 

 

1+(S (x))

 

 

 

 

 

то из условий равенства нулю кривизны на концах отрезка [x0; xn ]

следуют

равенства

нулю

вторых

производных в этих точках:

′′

′′

′′

′′

(xn )

= 0 . Это дает нам два дополни-

S (x0) = S1(x0) = 0 и S (xn ) = Sn

тельных уравнения для коэффициентов кубического сплайна:

m0 = mn = 0 .

(4.9)

Уравнения (4.6), (4.9) (или (4.7)) составляют систему n +1 линейных алгебраических уравнений для нахождения коэффициентов m0, m1,, mn . Определив из системы эти коэффициенты, по форму-

лам (2) находим значения коэффициенты ai и bi , i =1,2,,n . В результате мы определим все функции Si(x) , i =1,2,,n (см. равенства (4.4)). Таким образом, мы найдем искомую функцию y = S(x) –

кубический сплайн.

Заметим, что мы можем, например, на левом конце x0 = a зада-

вать условия типа (4.9), а на правом – типа (4.7) (или наоборот).

И в заключение этого пункта надо отметить, что матрица системы (4.6), (4.9) – трехдиагональная. Это значит, что ненулевые элементы этой матрицы могут находиться лишь на главной диагонали и двух соседних с ней диагоналях, расположенных сверху и снизу. Для решения таких систем разработан специальный метод – метод прогонки.

4.5. Метод прогонки.

Метод прогонки применяется для решения систем линейных уравнений с матрицей специального вида – трехдиагональной матрицей. Такая система имеет вид:

54

A m

i 1

C

m

+ B m

i+1

= −F ,i =1,2,,n 1

 

i

 

 

i

i

i

 

i

 

m0 = k0 m1 0

 

 

 

,

(4.10)

 

= kn mn 1 n

 

 

 

 

mn

 

 

 

 

где Ai, Bi,Ci

и

Fi ,

i =1,2,,n 1 , –

заданные числа.

Заданными

также считаются значения коэффициентов k0,µ0, kn и µn .

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

ние метод левой прогонки).

Вначале находят вспомогательные коэффициенты: 1) αn = kn и βn = µn ;

2)

αi

=

 

Ai

, βi

=

Bi

βi +1

+ Fi

, i = n 1, n 2,,1 .

Ci

−αi +1 Bi

Ci −αi +1 Bi

 

 

 

 

 

 

Затем находят неизвестные величины:

3)

m =

µ0 +k0 β1

;

 

 

0

1

k0 α1

 

 

 

 

4)

mi = αi

mi1 i , i =1,2,,n .

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

1)

 

Ai 0 , Bi 0 ,

 

Ci

 

 

 

 

Ai

 

+

 

Bi

 

, i =1,2,,n 1 ;

 

 

 

 

 

 

2)

 

k0

 

1,

 

kn

 

1,

 

k0

 

+

 

kn

 

<1 .

 

 

 

 

 

 

 

 

Легко видеть, что для системы (4.6), (4.9), которая позволяет определить коэффициенты кубического сплайна, условия корректного применения метода прогонки выполнены. Но они не будут выполнены, если уравнения (4.9) заменить на уравнения (4.7) (т. е. потребовать, чтобы на концах отрезка интерполяции касательные к графику имели заданные углы наклона), т. к. будем иметь равенство

k0 + kn =1. В этом случае систему можно решить методом Гаусса.

55

4.6. Пример построения интерполяционного многочлена Лагранжа и кубического сплайна

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

кам: (0, 0), (1, 2), (3, 3), (4, 1) и (6, 2). Для определения кубического сплайна на концах отрезка интерполирования потребуем равенство нулю кривизны кривой, т. е. выполнение уравнений (4.9).

Сначала запишем по формуле (4.3) интерполяционный многочлен Лагранжа для данной задачи. Здесь

ω(x) = x(x 1)(x 3)(x

4)(x 6) ,

 

 

(3) (4)

(6) = 72 ,

 

 

ω(0) = (1)

 

=1 (2) (3) (5)

= −30 ,

 

 

 

= 3 2 (1)

(3) =18 ,

ω(1)

 

 

 

ω(3)

 

=4 3 1 (2)=−24 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тогда

ω(4)

 

 

 

 

ω(6) = 6 5 3 2 =180 .

 

S(x)(x) (

0

 

 

2

 

 

 

3

 

1

 

 

 

 

2

)=

 

 

 

 

 

+

 

 

 

 

+

 

 

 

72x

30(x1)

18(x3)

24(x4)

180(x6)

 

)=

=x (

(x3)(x4)(x6)

+

(x1)(x4)(x6)

 

(x1)(x3)(x6)

+

(x1)(x3)(x4)

 

15

 

 

 

 

 

6

 

 

 

24

 

 

 

 

90

 

=17 x+83 x2

23 x

3 +

5

 

x4 1,4167x+1,1528x2 0,6389x3 +0,0694x4 .

 

 

12

72

36

 

72

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Здесь вычисления дробей проведены с точностью до 4 знаков после запятой. Однако, как будет видно далее из таблицы, этой точности оказывается не совсем достаточно!

Теперь займемся кубическими сплайнами. Вначале определяем коэффициенты системы (4.6) (и, следовательно, системы (4.10)).

Имеем:

n = 4 , h1 =1,

 

h2 = 2 ,

h3 =1, h4 = 2 ,

A1 =1 , A2 = 2 , A3 =1 ,

B1 = 2 ,

B2 =1,

B3 = 2 ,

C1 = C2 = C3 = −6 . Находим правую часть

системы (4.6) (ср. с правой частью системы (4.10)).

Т. к. Fi

y

i +1

y

i

 

y

i

y

i 1

 

 

= −6

 

 

 

 

, то F1 = 9

, F2 =15 , F3 = −15 . Из

 

hi +1

 

 

 

hi

 

 

 

 

 

 

 

 

 

 

уравнений (4.9) следует, что k0 = kn = µ0 = µ1 = 0 .

56

 

 

Находим вспомогательные коэффициенты: α

4

4

= 0 , α

3

= −1

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

β

3

= 5

, α

2

= −12 ,

β

2

= −3 ,

 

α

1

 

= −

35

 

,

β

1

= −35

. Теперь определя-

 

 

 

 

 

2

 

 

 

35

 

 

 

 

 

 

 

 

 

186

 

 

 

62

 

 

 

 

 

 

 

 

 

 

ем неизвестные m

: m

0

= 0

,

 

m

 

= −35

,

m

2

= −87

 

,

m

3

=

92 , m

4

= 0 .

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

1

62

 

 

 

31

 

 

 

 

31

 

 

 

 

 

Осталось, используя соотношения (4.5) и (4.4), вычислить ком-

поненты кубического сплайна:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1)

a

 

= 0 , b = 779

, S (x) =

779 x

 

35

 

x3 2,0941x0,0941x3 ;

 

 

 

 

372

 

 

 

 

1

 

 

1

372

 

1

 

 

 

 

 

 

372

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2)

a

2

=

221 ,

b

= 453 ,

 

S

2

(x) = 221 (3 x) + 453 (x 1)

 

 

 

 

 

 

 

 

 

 

93

2

 

93

 

 

 

 

 

 

 

 

 

 

 

 

 

186

 

 

 

 

 

 

 

 

 

 

 

35 (3 x)3 +174 (x 1)3 0,0927 +1,8159 x +0,2782 x2 0,1868x3 ;

 

 

 

 

 

 

 

 

62 12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3)

a

3

=

215 ,

b

=

47

, S

(x)

 

= 645 (4 x) +94 (x 3)

+

 

 

 

 

 

 

 

 

 

 

62

3

 

93

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

186

 

 

 

 

 

 

 

 

 

 

 

+92 (x3)3 87 (4x)3

≈ −30,9355 +32,8441x 10,0645x2 +0,9624 x3 ;

 

 

 

 

 

 

 

186

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4)

a

4

= −91 ,

b

= 2 ,

S

4

(x) = 186 (x 4) 91 (6 x) +

 

 

 

 

 

 

 

 

 

 

 

93

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

186

 

 

 

 

 

 

 

 

 

 

 

+23 (6 x)3 46,4839 25,2204 x + 4,4516x2 0,2473x3 . 93

Здесь замечания по точности приближенного вычисления дробей те же, что и в случае интерполяции по Лагранжу.

На рис. 4.1 представлены графики найденных интерполяционного многочлена Лагранжа (ИМЛ, пунктир) и кубического сплайна (сплошная линия). Видно, что на отрезке [0;4] графики практически

совпадают (что вовсе не обязательно, а, скорее, случайно), однако, далее появляются существенные различия. На крайних участках поведение интерполяционного многочлена Лагранжа однозначно определяется исходными данными, а поведение кубического сплайна – дополнительными условиями (4.9), наложенными на его поведение в начальной и конечной точке.

57

Приведем также сравнительную таблицу значений найденных аппроксимаций между значениями ИМЛ и кубического сплайна):

x

ИМ Лагранжа

Кубический

Модуль

(десятич. коэфф.)

сплайн

разности

 

0

0,00000

0,00000

0,00000

0,5

0,92103

1,03529

0,11426

1

2,00000

2,00000

0,0000

1,5

2,91390

2,81205

0,10185

2

3,44380

3,34290

0,10090

2,5

3,47488

3,45245

0,02243

3

2,99640

3,00060

0,00420

3,5

2,10175

1,99162

0,11013

4

0,98840

1,00070

0,01230

4,5

–0,04207

0,60179

0,64386

5

–0,58400

0,75940

1,34340

5,5

–0,12760

1,28806

1,41566

6

1,94100

2,00230

0,06130

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

58

Задания

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

Варианты:

1.

x

4

 

5

 

6

 

7

9

 

y

–1

1

 

2

 

1

3

 

 

 

 

 

 

 

 

 

 

2.

x

2

 

8

 

12

 

17

20

 

y

10

 

14

 

12

 

11

12

 

 

 

 

 

 

 

 

 

 

3.

x

2

 

4

 

5

 

6

8

 

y

3

 

1

 

2

 

1

2

 

 

 

 

 

 

 

 

 

 

4.

x

4

 

5

 

6

 

7

9

 

y

3

 

2

 

2

 

2

1

 

 

 

 

 

 

 

 

 

 

5.

x

6

 

7

 

8

 

9

12

 

y

–1

 

0

 

2

 

5

8

 

 

 

 

 

 

 

 

 

 

6.

x

1

 

2

 

4

 

5

6

 

y

9

 

2

 

7

 

3

5

 

 

 

 

 

 

 

 

7.

x

–3

 

–1

 

0

 

1

4

 

y

4

 

6

 

5

 

6

4

 

 

 

 

 

 

 

 

 

 

8.

x

2

 

4

 

6

 

7

8

 

y

9

 

7

 

8

 

7

8

 

 

 

 

 

 

 

9.

x

–5

 

–3

 

–2

 

2

3

 

y

8

 

6

 

6

 

5

1

59

10.

 

x

 

–2

0

 

1

 

2

3

 

 

y

56

 

49

 

54

 

50

53

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11.

 

x

1

 

3

 

5

 

6

8

 

 

y

48

 

43

 

47

 

44

46

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12.

 

x

0

 

2

 

3

 

4

6

 

 

y

19

 

20

 

18

 

15

17

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13.

 

x

 

5

 

10

 

17

 

25

36

 

 

y

 

15

 

37

 

21

 

25

17

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14.

 

x

1

 

3

 

6

 

7

8

 

 

y

2

 

0

 

2

 

3

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15.

 

x

3

 

5

 

6

 

7

11

 

 

y

10

 

13

 

15

 

17

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16.

 

x

 

1

 

 

4

 

 

5

 

 

6

8

 

 

y

 

19

 

 

17

 

 

23

 

 

23

18

 

 

 

 

 

 

 

 

 

 

 

17.

 

x

2

 

8

 

10

 

17

30

 

 

y

10

 

14

 

2

 

10

12

 

 

 

 

 

 

 

 

 

 

 

18.

 

x

1

 

4

 

9

 

10

13

 

 

y

5

 

3

 

6

 

3

4

 

 

 

 

 

 

 

 

 

 

 

19.

 

x

2

 

4

 

6

 

7

9

 

 

y

5

 

3

 

6

 

4

4

 

 

 

 

 

 

 

 

 

 

 

20.

 

x

1

 

4

 

7

 

8

10

 

 

y

8

 

15

 

6

 

13

12

 

 

 

 

 

 

 

 

 

 

 

21.

 

x

1

 

5

 

15

 

19

30

 

 

y

9

 

2

 

4

 

3

5

60

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]