Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вычислительная математика.pdf
Скачиваний:
3
Добавлен:
24.11.2025
Размер:
3.89 Mб
Скачать

 

 

 

Задания

 

 

 

Функции f (x), g(x) и h(x) заданы таблицами:

 

 

 

 

 

 

 

 

 

 

 

x

f (x)

x

g(x)

x

h(x)

1,50

0,51183

 

1,0

0,5652

 

0,00

0,28081

1,51

0,50624

 

1,1

0,6375

 

0,05

0,31270

1,52

0,50064

 

1,2

0,7147

 

0,10

0,34549

1,53

0,49503

 

1,3

0,7973

 

0,15

0,37904

1,54

0,48940

 

1,4

0,8861

 

0,20

0,41318

1,55

0,48376

 

1,5

0,9817

 

0,25

0,44774

1,56

0,47811

 

1,6

1,0848

 

0,30

0,48255

1,57

0,47245

 

1,7

1,1964

 

0,35

0,51745

1,58

0,46678

 

1,8

1,3172

 

0,40

0,55226

1,59

0,46110

 

1,9

1,4482

 

0,45

0,58682

1,60

0,45540

 

2,0

1,5906

 

0,50

0,62096

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

Для функции f (x)

1.

1,50911

2.

1,50820

3.

1,50253

4.

1,50192

 

 

5.

1,59513

6.

1,59575

7.

1,59614

8.

1,59728

 

 

 

Для функции g(x)

 

 

 

 

 

 

 

 

9.

1,0113

10.

1,0219

11.

 

1,0321

12.

1,0428

 

 

13.

1,9592

14.

1,9675

15.

 

1,9728

16.

1,9819

 

 

 

Для функции h(x)

 

 

 

 

 

 

 

 

17.

0,01928

18.

0,01392

19.

0,02475

20.

0,02713

 

 

21.

0,47113

22.

0,47531

23.

0,48398

24.

0,48675

 

 

 

 

 

 

 

 

Ответы

 

 

 

 

 

 

1.

0,50674

2.

 

0,50725

3.

 

0,51043

4.

0,51077

 

 

5.

0,45818

6.

 

0,45783

7.

 

0,45761

8.

0,45696

 

 

9.

0,5732

10.

 

0,5807

11.

 

0,5880

12.

0,5956

 

 

13.

1,5313

14.

 

1,5433

15.

 

1,5510

16.

1,5642

 

 

17.

0,29504

18.

 

0,29261

19.

 

0,29780

20.

0,29907

 

 

21.

0,60127

22.

 

0,60412

23.

 

0,61001

24.

0,61190

2.5 Интерполирование сплайнами

Увеличение степени интерполяционного многочлена далеко не всегда приводит к улучшению приближенного представления функции на всем отрезке [a,b]. Часто выгоднее разбить отрезок [a,b] на части и приближать y = f (x) на частях отрезка интерполяционными многочленами невысоких степеней. Такое интерполирование может быть названо сглаженным кусочным интерполированием, но его часто называют сплайн-интерполированием, используя английский термин. Сплайном называется гибкая деревянная рейка, позволяющая плавно соединять дуги разных кривых и по своей роли аналогичная лекалу.

42

Пусть функция

y = f (x) определена на отрезке [a,b] и известны

ее значения

y0, y1, , yn в системе

узлов a = x0 < x1 < < xn = b . Назовем функцию Sm (x)

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

онным сплайном порядка m для функции f (x), если выполнены следующие условия:

1)Sm (x) является многочленом степени m на каждом из отрезков [xn1, xn ],

2)Sm (x)= yk , k = 0,1, ,n ,

3)на всем отрезке [a,b] Sm (x) имеет непрерывные производные до порядка m 1:

Sm(k )[xn1, xn ]= Sm(k )[xn , xn+1 ], k =1,2, ,m 1,

то есть в узлах интерполирования должны совпадать как значения самих Sm(x) слева и справа, так и их производных до порядка m 1.

 

Если

m 2 , то для единственности

Sm (x)

следует задать дополнительно еще m 1

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

либо произвольно, либо из до-

полнительной информации о поведении

 

 

f (x).

 

 

 

 

 

 

 

 

При m =1 получается известный метод ломаных.

 

 

 

 

При

m = 2

 

функция y = f (x) аппроксимируется кусочно-квадратичными полинома-

ми.

Для

простоты

проиллюстрируем

 

 

 

построение S2 (x)

в

случае

n = 3. Определим

f (x)= S2i (x), i =1,2 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S(1)(x)= a x

2 +b x + c ,

S(2)(x)= a

2

x2

+b x + c .

 

 

 

 

 

2

 

1

 

 

1

1

 

2

 

 

 

 

 

2

2

 

 

 

 

 

Чтобы функция

f (x)

была непрерывна и принимала в

узлах заданные значения

yi , i =1,2,3 , необходимо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S1

(x

)= y , S1

(x

2

)= y

2

, S 2 (x

2

)= y

2

, S 2 (x

)= y

3

.

 

 

(1)

 

2

1

1

 

2

 

 

2

 

 

 

2

3

 

 

 

 

 

 

Чтобы функция f (x) была дифференцируема в узлах, необходимо

 

(S21 (x2 ))= (S22 (x2 )).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(2)

 

Функция f (x)

 

определяется шестью коэффициентами полиномов S2(1)(x) и S22 (x).

Равенства (1), (2) дают пять уравнений. Для однозначного определения

f (x) обычно указы-

вается значение f

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(x) в некотором узле, например

 

 

 

 

 

 

 

(S21 (x1 ))= d1 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(3)

где

d1 – некоторое заданное значение. (1) – (3) представляют собой систему шести линей-

ных уравнений относительно коэффициентов полиномов S2i

(x), i =1,2,

которая может быть

решена методом исключения Гаусса.

 

 

 

 

 

 

 

 

 

 

 

 

43

Этот подход легко распространяется на произвольное число узлов.

При m = 3 получаем кубический сплайн. На каждом отрезке [xi , xi+1], i =1,2, ,n 1

функция S3i (x) представляется в виде

 

S i

(x)= a

x3 +b

x2 +c x + d

, i =1,2, ,n 1.

(4)

3

i

 

i

 

i

i

 

 

В случае задачи интерполирования или аппроксимации должны выполняться соотно-

шения в узлах

 

 

 

 

 

 

 

S i

(x )= y

, i =1,2, ,n .

 

 

(5)

3

i

i

 

 

 

 

 

 

Это n уравнений. Кроме того

 

S3i1(xi )= S3i (xi ), (S3i1(xi ))= (S3i (xi )),(S3i1(xi ))= (S3i (xi )).

(6)

Это еще

3n 6

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

S3(x) нужно определить

4n 4 коэффициента в (4). Еще два недостающих уравнения для так называемого естественного кубического сплайна задаются так:

(S

3

(x

))=

(S

3

(x

n

))= 0 .

(7)

 

1

 

 

 

 

 

Сплайн S3(x)

можно построить, решив линейную систему уравнений (5)-(7) относи-

тельно неизвестных коэффициентов в (4).

На практике используется другой подход. Строят трехдиагональную систему уравнений для значений вторых производных S3′′(x) в узлах сетки. Саму функцию S3(x) определяют затем с помощью интегрирования. Введем обозначения

yi = S3i (xi )= S3i1(xi ), yi′ = (S3i (xi ))= (S3i1(xi )), yi′′= (S3i (xi ))= (S3i1(xi )),

в которых учтены условия (5) и (6).

Для нахождения yi′′ получается система n 2 линейных уравнений с n 2 неизвестными y2′′, , yn′′1 , кроме того y1′′ = yn′′ = 0 из (7):

′′

′′

′′

yi+1 yi

 

yi yi1

 

 

 

 

 

, i = 2,3, ,n 1.

(8)

 

h

h

yi1hi1

+ 2yi (hi + hi1 )+ yi+1hi = 6

 

 

 

 

i

 

i1

 

 

Система легко решается методом исключения Гаусса.

После того, как значения yi′′ найдены, и так как нам известны величины yi , значения первых производных в узлах сетки можно определить по формуле:

 

yi+1 yi

hi

 

hi

 

 

yi′ =

 

yi′′+1 6

yi′′

3

, i =1,2, ,n 1.

(9)

h

 

i

 

 

 

 

 

Выражения для самих S3i (x) можно получить из формулы

44

S3i (x)= yi + yi(x xi )+ yi′′

(x xi )2

 

+(yi′′+1

yi′′)

(x xi )3

, i =1,2, ,n 1.

(10)

2

 

6hi

 

 

 

 

 

 

Если требуется вычислить S3(x)

при некотором конкретном значении

x , то сначала

необходимо определить отрезок [xi , xi+1], в котором лежит точка x , и затем воспользоваться выражением для соответствующего полинома S3i (x).

Примеры. Функция y = f (x) задана таблицей

 

 

 

 

 

 

 

 

x

 

 

 

 

0

 

 

 

2

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

1,5

 

 

2,3

 

3,4

 

Построить интерполяционные сплайны: 1) первого, 2) второго, 3) третьего порядка;

вычислить значение f (x)

при x =1. Сделать проверку результата.

 

 

Решение.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1). S

(x)=

S(1)

(x)= a x

 

+b ,

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

1

1

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

(2)

(x)= a2 x +b2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S2

 

 

 

 

 

 

 

 

Должны выполняться соотношения:

 

 

 

 

 

 

S1

(0)

=1,5, S1(2)

= 2,3, S 2 (2)

= 2,3, S 2 (4)= 3,4 . Отсюда

 

 

 

1

 

 

 

 

 

 

1

 

 

 

 

 

1

 

2

 

 

 

 

 

 

b1 =1,5,

 

 

 

 

 

 

 

b1 =1,5,

 

 

 

 

 

 

 

 

2a +1,5 = 2,3,

 

 

 

a = 0,4,

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

2a

+ b

= 2,3,

 

 

2a

=1,1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

2

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

4a

+ b

= 3,4;

 

 

 

b =1,2.

 

 

 

 

 

 

 

 

 

 

2

 

2

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

Таким образом:

 

 

 

 

 

 

 

 

 

 

 

 

S (x)

=

S

(1)(x)

= 0,4x +1,5,

0 x 2,

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

(2)

(x)= 0,55x +1,2,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 x 4.

 

 

 

 

 

 

 

 

 

 

S1

 

 

 

 

 

 

 

Проверка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S (0)

=

1,5, S1(2)= 2,3, S

2 (2)= 2,3,

S2 (4)= 3,4 .

 

 

1

 

 

 

 

 

1

 

 

 

 

1

 

1

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

2

 

 

 

 

1

 

 

 

 

 

 

2).

S2

(x)

= a1x

 

 

 

+b1x +c1,

(S2

(x)) =

2a1x +b1,

 

 

 

 

 

2

(x)

= a2 x

2

+b2 x +c2;

2

2a2 x +b2.

 

 

 

 

S2

 

(S2

(x)) =

 

 

Для построения кусочно-квадратичного полинома должны выполняться соотношения:

S21 (0)=1,5; S21 (2)= 2,3; S22 (2)= 2,3; S22 (4)= 3,4; (S21 (2))= (S22 (2)).

Добавим еще одно соотношение (S21(0))= 0 . Отсюда

45

c

=1,5,

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

= 0,2,

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

4a1 + 2b1 +1,5 = 2,3,

 

 

b1 = 0,

 

 

4a

 

+ 2b + c

 

 

= 2,3,

 

 

c

=1,5,

 

 

 

 

 

2

 

2

 

 

 

 

2

 

 

 

 

 

 

1

 

 

 

 

 

 

16a2 + 4b2 + c2 = 3,4,

 

4a2 + b2 = 0,8,

 

4a

 

+ b

= 4a

2

 

+ b

,

 

 

4a

2

+ 2b + c

2

= 2,3,

 

 

1

1

 

 

 

 

 

 

 

2

 

 

 

 

 

 

2

 

 

 

= 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b1

 

 

 

 

 

 

 

 

 

 

 

 

 

16a2 + 4b2 + c2 = 3,4.

Решая методом исключения Гаусса

 

 

 

4

 

 

1

0

 

0,8

 

 

4

1

0

 

0,8

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

2

1

 

 

 

 

 

 

0

1

1

 

1,5

 

 

 

 

 

 

 

 

2,3

~

 

 

 

 

 

 

 

 

4

1

 

3,4

 

 

0

0

1

 

0,2

 

 

 

 

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c2 = 0,2;

 

 

b2 =1,3;

4a2 +1,3 = 0,8 a2 = −0,125.

Таким образом:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S2 (x)= 0,2x

 

 

 

+1,5,

 

0 x 2,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

+1,3x + 0,2,

2 x 4.

 

 

 

 

0,125x

 

 

Проверка

S2 (0)=1,5; S21 (2)= 2,3; S22 (2)= 2,3; S22 (4)= 3,4;

(S21 (2))= 2 0,2 2 = (S22 (2))= −2 0,125 2 +1,3 0,8 = 0,8. (S21 (0))= 0.

3). Здесь n = 3;

в формуле (8)

i = 2; hi

= h = 2; y1 =1,5; y2 = 2,3; y3 = 3,4. Из формулы

(7): y1′′ = y3′′ = 0 . Из формулы (8)

 

2y2′′

4

 

 

3,4

2,3

2,3

1,5

y2′′ = 0,1125 .

 

= 6

 

2

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Из формулы (9)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

2

y

 

 

h

 

h

 

 

 

 

 

2,3 1,5

 

 

 

 

 

1

 

 

 

y1′ =

 

 

 

 

1

y2′′

6

y1′′

3

,

 

y1

=

2

 

 

0,1125

3

=

0,3625,

 

 

 

h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y3 y2

 

 

h

 

 

h

 

 

 

 

3,4 2,3

 

 

 

 

 

2

 

 

y2′ =

 

 

 

 

h

 

 

y3′′

6

y2′′

3

,

y2

=

 

2

 

 

0,1125

3

= 0,475.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Из формулы (10):

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S3 (x)

 

 

 

S31

(x)=1,5 +0,3625x +

0,1125 x3

,

 

0 x 2;

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

 

 

 

12

 

 

 

 

 

 

 

 

0,1125 (x 2)3 , 2 x 4.

 

 

 

 

S32

(x)= 2,3

+0,475(x 2)+0,1125 (x 2)2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

12

 

Проверка

S3 (0)=1,5; S31(2)=1,5 +0,725 +0,075 = 2,3; S32 (2)= 2,3;

S32 (4)= 2,3 +0,95 +0,225 0,075 = 3,4; (S31(2))= (S32 (2))= 0,475.

Для вычисления значения S3(x) в точке x =1, заметим, что 0 <1 < 2 и используем для

46

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