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

7.9 Сплайн-интерполяция

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

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

Запишем координаты по х и у в векторы vx и vy соответственно.

 

2.046

 

 

0.4004

 

 

1.929

 

 

 

0.401

 

 

 

 

 

 

 

 

9.568

 

 

11.85

 

 

7.388

 

 

 

6.206

 

 

 

6.978

 

 

 

5.005

 

vx:=

 

 

vy :=

 

 

 

9.213

 

 

10.81

 

 

 

 

 

8.443

 

 

 

8.703

 

 

 

 

 

 

 

 

 

1.054

 

 

 

0.5788

 

 

 

9.038

 

 

 

10.31

 

 

 

 

 

 

 

 

 

 

 

8.927

 

 

9.998

Для сортировке их по координате х, объединим их с помощью функции augment. Затем функцией csort отсортируем матрицу по первому(нулевому) столбцу, и потом опять их разъединим.

V := augment(vx,vy)

W := csort(V,0)

190

vx:= W 0

vy := W 1

 

 

 

0

 

 

0

 

0

1.054

 

0

-0.579

 

1

1.929

 

1

-0.401

 

2

2.046

 

2

-0.4

vx =

3

6.978

vy =

3

-5.005

4

7.388

4

-6.206

 

5

8.443

 

5

-8.703

 

6

8.927

 

6

-9.998

 

7

9.038

 

7

-10.31

 

8

9.213

 

8

-10.81

 

9

9.568

 

9

-11.85

Построенные точки линейным сплайном с помощью функции lspine(vx,vy), аргументами которой являются два вектора координат точек по х и по у. Определим функцию fl(x) с помощью функции интерполирования interp.

vl := lspline(vx,vy)

fl(x) := interp(vl,vx,vy,x)

0

fl(x) 10

20

 

 

 

 

 

0

5

10

 

 

 

x

 

 

191

Аналогично интерполируем параболическим и кубическим сплайном функциями pspline(vx,vy) и csplie(vx,vy).

vp := pspline(vx,vy)

fp(x) := interp(vp,vx,vy,x)

0

fp(x) 10

20 0

vc := cspline(vx,vy)

fc(x) := interp(vc,vx,vy,x)

0

fc(x) 10

20 0

5

10

x

 

5

10

x

 

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

192

0

vyi

fl(x) 5

fp(x) fc(x) 10

15

 

 

 

 

 

 

 

 

 

 

 

0

2

4

6

8

10

vxi,x,x,x

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

193